N.K*_*K.T 7 flutter google-cloud-firestore
我即将使用 firestore 创建一个 1 对 1 聊天应用程序。特点如下:
我认为我的Message模型类如下:
false)现在假设user1和user2进行了对话。我正在考虑chats通过以下方式为聊天创建一个单独的根集合():
chats(col) --> user1 --> chats(col) --> chatRoomId --> messages(col) --> messageId1
--> messageId2
--> messageId3
--> user2 --> chats(col) --> chatRoomId --> messages(col) --> messageId1
--> messageId2
--> messageId3
Run Code Online (Sandbox Code Playgroud)
这种方法的问题在于 - 将会为两个用户分别存储重复的数据,例如相同的消息。而且更新消息也会很麻烦,因为消息需要在两个位置都更新。
那么,牢记所有要求,什么是更好的结构呢?
不确定这是否是最好的方法,但我构造 firestore 的方式:
我有一个用于群聊和一对一聊天的collection通话。包含以下信息:groupsgroups
groups)groups在 ChatOverviewScreen 中,我有一个 firestore 查询,它仅检索包含其userIDin字段的文档members。
因此,在 ChatOverviewScreen 中,您现在可以显示用户拥有的所有聊天,并且您已经知道检索属于特定聊天的消息所需的 ID 引用。
所有消息都存储在一个名为 的集合中,chats其中每个 documentID 也可以在groups文档中找到。中的每个文档都chats包含一个包含所有messages.
以下链接也非常有用:https://levelup.gitconnected.com/structure-firestore-firebase-for-scalable-chat-app-939c7a6cd0f5
| 归档时间: |
|
| 查看次数: |
8156 次 |
| 最近记录: |