【问题标题】:How can I filter a stream with document ids?如何过滤带有文档 ID 的流?
【发布时间】:2020-05-10 14:51:35
【问题描述】:

如何使用 user/uid/usergroups 中的文档 ID 过滤组/集合中的文档?

我想使用存储在 user/uid/usergroups 中的文档 ID 过滤组/,以仅向用户显示组 存储在他的用户资料中。

我没有收到有关此代码的错误消息,但我没有看到任何组......

 Stream<QuerySnapshot> get userGroupIDs {
    return userGroupCollection.document(uid).collection('usergroups').snapshots();
  }

  Stream<QuerySnapshot> get group {
    return db.collection('groups').where('GroupID', isEqualTo: userGroupIDs).snapshots();
  }

.

StreamBuilder<QuerySnapshot>(
                            stream: group,
                            builder: (BuildContext context,
                                AsyncSnapshot<QuerySnapshot> snapshot) {
                              if (!snapshot.hasData) {
                                return new Text('Connecting...',style: TextStyle(fontSize: 200),);
                              } else {return ListView.builder(

【问题讨论】:

    标签: firebase flutter dart google-cloud-firestore


    【解决方案1】:

    尝试以下方法:

      Stream<QuerySnapshot>  userGroupIDs() async*{
        String docId;
         Stream<QuerySnapshot> snap = Firestore.instance.collection("users").document("uid").collection('usergroups').snapshots();
         await for(var snapData in snap){
           snapData.documents.forEach((docResult){
            docId =  docResult.documentID;
           });
         }
       yield* Firestore.instance.collection('groups').where('GroupID', isEqualTo: docId).snapshots();
      }
    

    然后在StreamBuilder

    StreamBuilder<QuerySnapshot>(
                                stream: userGroupIDs(),
    

    首先从集合usergroups 中获取documentID,然后在查询中将该ID 与GroupID 一起使用

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-06-25
      • 1970-01-01
      相关资源
      最近更新 更多