我正在Flutter中建立一个1-1聊天系统,该系统将聊天数据存储在每对聊天者的Firestore子集合中。我希望能够显示一个列表,用户可以在其中看到他的聊天伙伴及其最新消息(如Whatsapp)。我以为我可以做类似的事情:
Firestore.instance.collectionGroup('Chats').where('idFrom', isEqualTo: uid)
.limit(1)
.orderBy("timestamp", descending: true)
.snapshots()
但这只是返回用户发送的最后一条消息。有人可以告诉我这是否完全可行,或者可以指出实现我正在尝试的替代方法?现在,我看到的唯一另一种选择是删除限制,然后过滤掉客户端的最后一条消息,但这似乎并不明智,因为每个子集合中的消息量可能变得非常大。 / p>
答案 0 :(得分:1)
您要执行的操作无法通过单个查询完成。集合组查询将考虑所有具有相同名称的集合中的所有文档。对于每个不同的子集合,都无需特别考虑。
您要么必须分别查询每个子集合,要么将最新消息复制到仅包含该消息的另一个子集合中。