【问题标题】:Flutter Web Firebase - Get collection by sub-collection fieldFlutter Web Firebase - 通过子集合字段获取集合
【发布时间】:2020-05-03 12:40:30
【问题描述】:

我正在构建与 Firestore 链接的 Flutter Web 应用程序。数据库架构如下:

我的问题是我想通过输入用户电子邮件地址来获取用户文档参考,即(公司和用户 ID)。下面是我的 getUserRef() 方法的代码:

Future<fs.DocumentReference> getUserRef (String userEmail) async {

String comp;
String id;
List<String> companies = await companyList();
    for (var i = 0; i < companies.length; i++) {
      store.collection('companies').doc(companies[i]).collection('users').get().
      then((val) {
        val.forEach((user){
          if(user.data()['Email'] == userEmail) {
            comp = user.data()['company'];
            id = user.id;
          }

        });

      });

    }
  fs.DocumentReference ref = store.collection('companies').doc(comp).collection('users').doc(id);

return ref;
 }

我的 companyList() 方法运行良好,并检索了所有公司文档 ID 的列表。我不知道如何让它工作,没有它就无法继续项目。

感谢任何帮助。

【问题讨论】:

    标签: firebase flutter google-cloud-firestore flutter-web


    【解决方案1】:

    听起来您正在寻找集合组查询,这将是一次搜索所有公司的users 的单个查询。

    应该是这样的查询:

    var query = Firestore.instance.collectionGroup("users").where("Email", isEqualTo: userEmail);
    var querySnapshot = await query.getDocuments();
    var userDocumentRef = querySnapshot.documents[0];
    

    另见:

    【讨论】:

      猜你喜欢
      • 2021-03-04
      • 1970-01-01
      • 2022-11-16
      • 1970-01-01
      • 2013-07-29
      • 2020-03-15
      • 1970-01-01
      • 1970-01-01
      • 2020-08-28
      相关资源
      最近更新 更多