Flutter Web Firebase-按子收集字段获取收集

时间:2020-01-16 16:03:49

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

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

Firestore Schema

Firestore Schema

我的问题是我想通过仅输入用户电子邮件地址来获取用户文档参考,即(公司和用户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()方法工作正常,并检索了所有公司doc ID的列表。我不知道如何使它工作,没有它就无法继续进行该项目。

感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

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

这将是一个查询,例如:

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

另请参阅: