Android Firestore集合组不处理where子句
我正在使用flatterfire开发一个使用Firebase无服务器服务的Android应用程序 但是,当我尝试使用集合组查询某些数据时,当我使用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
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,现在检查。