如何过滤带有文档ID的流?

时间:2020-05-10 14:51:35

标签: firebase flutter dart google-cloud-firestore

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

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

enter image description here enter image description here

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

 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(

1 个答案:

答案 0 :(得分: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(),

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