我应该如何设计基本的私人聊天结构?

时间:2019-04-05 14:33:16

标签: nosql google-cloud-firestore chat

我正在尝试创建一个基本的聊天应用程序,只包含私人消息。

背景

我有两个用户,用户A 用户B

users/A
- name: "John"
users/B
- name: "Mary"

用户A 用户B 发送消息时,我在这两个用户之间建立了对话。在这种情况下,对话ID为A_B。 Read more here.

user-conversations/A/B # A for user A, B for user B
 - conversationId: A_B
user-conversations/B/A # B for user B, A for user A
 - conversationId: A_B

我有用户对话集。我创建此结构的原因是,当用户A 打开应用程序时,我想显示他与用户B 的姓名和图像的对话。通过这种结构,我只需要有一个userId,然后就可以检索他/她与其他用户信息的对话。

当然,我有包含消息的对话集合。

conversations/A_B/messages # A_B is conversationId between user A and user B
 - text: "hey"
 - sender: "A"

问题

因此,如何改善数据库结构,特别是用户对话集合。因为,当某人想要读取或写入对话/ A_B时,我要确保允许该用户写,并且只有当我有与该用户的对话ID关联时,我才能实现。

0 个答案:

没有答案