firebase - Flutter Web Firebase - 通过子集合字段获取集合

标签 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() 方法工作正常,并检索所有公司文档 ID 的列表。我不知道如何让它工作,没有它就无法继续该项目。

感谢任何帮助。

最佳答案

听起来您正在寻找一个集合组查询,该查询将是一次在所有公司的用户中进行搜索的单个查询。

这将是一个像这样的查询:

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

另请参阅:

关于firebase - Flutter Web Firebase - 通过子集合字段获取集合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59773573/

相关文章:

flutter - 如何将列宽设置为其子行中最长的列宽?

android - Firebase Firestore 访问规则 - 比较资源数据

android - FirebasePushNotificationPlugin(xamarin) - 当应用程序在后台时不会触发事件(android)

flutter - Flutter如何在特定屏幕上强制使用暗模式

android - 如何在Flutter中创建超链接图标?

node.js - 如何更新文档引用?

angularfire2 - 如何检索单个 Firestore 文档的 ID?

javascript - Firebase(Web)无法让 orderByChild 工作

android - Firebase 远程配置,无法获取值(value)。安卓

Angular 5 - Angular firebase - 测试 - 模拟 getDownloadURL 方法