Firebase 云Firestore:基于对象内容的过滤器(通过颤振)
我正在使用以下Firestore设置: 现在我想接收当前用户(给定uid)在用户对象/列表中的所有文档。 用户是thje users集合的引用对象Firebase 云Firestore:基于对象内容的过滤器(通过颤振),firebase,dart,google-cloud-firestore,flutter,Firebase,Dart,Google Cloud Firestore,Flutter,我正在使用以下Firestore设置: 现在我想接收当前用户(给定uid)在用户对象/列表中的所有文档。 用户是thje users集合的引用对象 理想情况下,我希望在cloud_firestore软件包中使用Flitter中的此过滤器,但目前我只想知道这是否可行。是的。这是可能的。但是,您需要将用户引用存储为值映射,并创建一个要在客户端中查询的引用(基于用户ID)。看一下文档:我找到了一篇文章,解释说,这是我目前想象不到的。 我将设置更改为: 现在,我可以使用来自flatter的这个查询来
理想情况下,我希望在cloud_firestore软件包中使用Flitter中的此过滤器,但目前我只想知道这是否可行。是的。这是可能的。但是,您需要将用户引用存储为值映射,并创建一个要在客户端中查询的引用(基于用户ID)。看一下文档:我找到了一篇文章,解释说,这是我目前想象不到的。 我将设置更改为: 现在,我可以使用来自flatter的这个查询来接收给定用户的聊天记录
Firestore.instance
.collection('chats')
.where('users.' + _auth.currentUser.uid, isEqualTo: true)
.snapshots
.listen((data) {...});
我还使用此规则来确保用户只能访问他参与的聊天:
match /chats/{chatId} {
allow read: if resource.users[request.auth.uid];
// write rule yet to create
}
与在地图中将userID的值设置为
true
不同,您应该在这里添加一个时间戳,如我链接的文章中所述。使用当前答案,您将无法根据时间按特定顺序对邮件进行排序。它们将以随机(按文档ID)顺序出现。请问,您是如何解决Firestore索引问题的。当添加另一个.where子句时,firestore要求添加一个带有UID值的索引,这显然是没有意义的。