【发布时间】:2018-09-07 16:22:14
【问题描述】:
我正在使用以下 Firestore 设置:
现在我想接收当前用户(给定的 uid)在用户对象/列表中的所有文档。 users 是引用用户集合的对象。
理想情况下,我希望将 Flutter 中的这个过滤器与 cloud_firestore 包一起使用,但是现在我只是对这是否可能感兴趣。
【问题讨论】:
标签: firebase dart google-cloud-firestore flutter
我正在使用以下 Firestore 设置:
现在我想接收当前用户(给定的 uid)在用户对象/列表中的所有文档。 users 是引用用户集合的对象。
理想情况下,我希望将 Flutter 中的这个过滤器与 cloud_firestore 包一起使用,但是现在我只是对这是否可能感兴趣。
【问题讨论】:
标签: firebase dart google-cloud-firestore flutter
是的。这个有可能。但是,您需要将用户引用存储为值映射,并在客户端中创建查询引用(基于用户 ID)。看看文档:Working with Arrays, Lists and Sets
【讨论】:
我发现this 的帖子解释说,目前不可能像我想象的那样。 我将设置更改为:
我现在可以使用 Flutter 的这个查询来接收给定用户的聊天记录
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
}
【讨论】:
true,而应在此处放置时间戳,如我链接的文章中所述。使用您当前的答案,您将无法根据时间按特定顺序对消息进行排序。它们将以随机(按文档 ID)顺序出现。