Firestore收集组不使用where子句

时间:2019-12-30 00:59:47

标签: android firebase flutter google-cloud-firestore

我正在使用 FlutterFire 使用Firebase无服务器服务开发Android应用。

但是,当我尝试使用集合组查询某些数据时,当我使用where子句时,查询返回空结果。

在我的数据库中,有一个名为“ users”的集合,在“ users”中的每个文档中都存在一个名为“ subcollection”的chats,就像这样:< / p>

users/{userDocument}/chats/{chat}

一个聊天是两个用户之间的对话,一个用户在自己的文档中拥有文档聊天,另一个用户由文档聊天的documentId引用,documentId使用云函数onCreated存储在uid字段中。 DocumentChat example

因此,当我尝试使用collectionGroup进行所有聊天时,我会使用:

Firestore.instance
        .collectionGroup('chats')
        .where('uid', isEqualTo: userId)
        .snapshots(includeMetadataChanges: true);

在这种情况下,“ userId”具有用户1的ID,“ uid”具有用户2的ID。在app中,userId引用“ uid”,并且我保证变量userId具有与field相同的值'uid'。

我创建了这段代码来打印userId值

static Stream<QuerySnapshot> getStreamChats(userId) {
       print('querying userId: $userId');
       Stream<QuerySnapshot> _stream = Firestore.instance
        .collectionGroup('chats')
        .where('uid', isEqualTo: userId)
        .snapshots(includeMetadataChanges: true);
      _stream.listen((_q) => print(_q.documents));
      return _stream;
  }

然后在运行时输出以下内容:

I / flutter(4044):查询userId:YNANBZqQdNg5wYkzXRTNkPWwCHC3

I / flutter(4044):[]

当我运行不带where子句的查询时,该查询返回chats集合内的所有文档。

我尚未检查任何规则,因此可以读/写

Indexes are created

0 个答案:

没有答案