Firestore:构建聊天应用程序时的问题

时间:2020-06-19 12:35:50

标签: firebase flutter google-cloud-firestore

所以我想做的是一个聊天应用程序,但是问题是我不知道如何在两个用户之间建立连接。我所做的是,在该集合中有一个用户集合,其中一些用户拥有可以添加的朋友集合,因此我设法让用户输入朋友的电子邮件并在其中查找用户的收藏集,但我无法在用户与其好友之间建立联系以进行聊天,我当时正考虑为每个用户创建一个聊天集,但我认为这样做效率不高,仍然无法共享相同的内容收集两个用户之间的任何想法,有什么想法如何正确构造它?

在此先感谢您能提供的帮助。

1 个答案:

答案 0 :(得分:0)

这些方法是基于Firestore的聊天的基本方法

  • 消息收集方法chats\{chatID}\messages\{messageID}使用子集合,但它要求对每条消息进行唯一读取,每条消息限制为1MB。

  • 嵌入式文档方法chats\{chatID}.messages[]每个聊天室只能创建一个文档,但这将达到每个文档1MB的限制

我建议您阅读this example的用例,以获取有关实现的更多想法以及如何处理1MB的限制。

在该示例中,建议使用联接查找聊天室,但这会增加数据库的复杂性,问题注释中的answer使用以下方法来生成和共享会议室ID。

使用用户ID并将其合并以生成房间ID,这种方法可以利用好友列表查找并生成房间ID

这是建议生成房间ID的代码

var chatID = 'chat_'+(user1<user2 ? user1+'_'+user2 : user2+'_'+user1);

好友列表示例:

{

    userid:"user1",
    "friendlist"{

    "user2":"chat_user1_user2" \\result of previous code
    }
}