我想问一下,当一个人开发聊天应用程序时,是否有针对firestore的最佳实践,以及为聊天室存储消息的最佳做法是什么.
这里的假设是每个聊天室都有自己的文档.
我开始使用数组来存储来自用户的消息.这种方法的问题在于,每次向聊天室提交新消息时都无法添加,插入(追加)新条目.必须保存数组的新副本并附加新消息.除非聊天历史记录在子数组等中分割,否则这似乎会扩展得非常糟糕.
在官方文档中,他们提出了一种结构,其中应该将特定聊天室的消息作为单独的文档存储在该聊天室的子集合中.我想知道这种方法是否是最好的,有什么缺点,或者是否有其他首选方法可以做到这一点.
我通常会采用“每个聊天室都有一个消息子集合的
方法.而且每个新消息都是这个子集合中的单独文档.”这有几个优点:可以轻松
添加或编辑单个
邮件,并且您可以执行许多不同的
查询(例如“抓取最近20条消息”)
我想,最大的缺点是,如果你发现新用户经常会进入你的聊天,并希望看到房间的整个聊天记录,直到他们加入,这将导致大量的数据库读取.但实际上,我不知道在现实生活中会发生多少次,你可以通过使用分页来批量抓取你的历史聊天来减轻这种情况.