【发布时间】:2021-02-16 11:02:25
【问题描述】:
我正在为我的应用构建私人聊天功能。我选择 Firestore 作为我的后端,下面是聊天线程和消息的结构。
privateChats - chatId1 - chatId1 - messageId1, messageId2,...
collection - document - collection - documents
我想要实现的是获取每个聊天线程(chatId1,chatId2,...)的快照及其相应的消息(最后一个文档/消息已发送)并显示如下 - 请参阅聊天屏幕
我尝试过类似的方法
databaseRef.collection('privateChats').where('chatId', whereIn: chatList).snapshots();
然而,从上面的快照返回的流只监听 createdAt 字段存在的字段的变化。
这给了我一个唯一的选择来为每个聊天线程获取单独的快照
databaseRef.collection('privateChats').doc('chatId1).collection('chatId1).snapshots();
databaseRef.collection('privateChats').doc('chatId2).collection('chatId2).snapshots(); 并以某种方式将这些快照组合成单个流(我不知道如何)
所以我的问题是 - 在给定聊天 ID 列表时,有没有办法通过一个查询来获取每个聊天线程的快照?如果没有,有什么解决办法?我应该想出不同的云火库结构吗? 谢谢
【问题讨论】:
标签: firebase flutter dart google-cloud-firestore