Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/178.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android Firestore集合组不处理where子句_Android_Firebase_Flutter_Google Cloud Firestore - Fatal编程技术网

Android Firestore集合组不处理where子句

Android Firestore集合组不处理where子句,android,firebase,flutter,google-cloud-firestore,Android,Firebase,Flutter,Google Cloud Firestore,我正在使用flatterfire开发一个使用Firebase无服务器服务的Android应用程序 但是,当我尝试使用集合组查询某些数据时,当我使用where子句时,查询返回空结果 在我的数据库中有一个名为“users”的集合,在“users”中的每个文档中都有一个名为“chats”的子集合,如下所示: users/{userDocument}/chats/{chat} 一个聊天是两个用户之间的对话,一个用户在他自己的文档中有文档聊天,另一个用户被文档聊天的documentId引用,docume

我正在使用flatterfire开发一个使用Firebase无服务器服务的Android应用程序

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

在我的数据库中有一个名为“
users
”的集合,在“
users
”中的每个文档中都有一个名为“
chats
”的
子集合,如下所示:

users/{userDocument}/chats/{chat}
一个聊天是两个用户之间的对话,一个用户在他自己的文档中有文档聊天,另一个用户被文档聊天的documentId引用,documentId使用onCreate的云函数存储在uid字段中。

因此,当我尝试使用
collectionGroup
获取所有聊天时,我使用:

Firestore.instance
        .collectionGroup('chats')
        .where('uid', isEqualTo: userId)
        .snapshots(includeMetadataChanges: true);
在本例中,“userId”具有用户1的Id,“uid”具有用户2的Id。在应用程序中,userId引用'uid',我保证变量userId与字段'uid'的值相同

我创建此代码是为了打印用户ID值

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;
  }
static Stream getStreamChats(userId){
打印('queryinguserid:$userId');
Stream _Stream=Firestore.instance
.collectionGroup(“聊天室”)
.where('uid',isEqualTo:userId)
.快照(包括元数据更改:true);
_stream.listen((_q)=>打印(_q.documents));
返回流;
}
当它运行时,输出以下内容:

I/flatter(4044):查询用户ID:ynanbzqdng5wykzxrtnkpwwchc3

I/颤振(4044):[]

当我在没有where子句的情况下运行此查询时,该查询将返回chats集合中的所有文档

我还没有检查任何规则,所以它都可以读/写


请编辑问题,以显示与查询匹配的文档的一些具体示例。因为我们看不到您的数据,所以我们不知道您的查询是否与您的文档匹配。我们需要能够在您的代码中看到匹配的uid字段和userId。您在查询中使用的
userId
的确切值是多少?我们看不出那是什么。如果它与uid不匹配,那么显然它将不匹配。尝试对值进行编码。我在运行时打印了userId,现在检查。