我试图理解使用Firebase数据库存储和检索用户对用户会话的最佳数据库结构,用于聊天应用程序(基于web)。
我的当前计划是为每个聊天提供自己的ID,它将通过组合两个聊天参与者的唯一Firebase ID (如UserID1_UserID2)来创建,例如:FQ5d0jwLQDcQLryzevBxKrP72Bb2_GSIbxEMi4jOnWhrZaq528KJKDbm8这个聊天ID将存储在数据库中,并包含在两个参与者之间发送的消息。
示例布局:
MYAPP
|_______conversations
| |_____UserID1_UserID2
| | |
| | |__OshwYF72Jhd9bUw56W7d
| | | |__name:"Jane"
| | | |__text:"Hello!"
| | |
| | |__KbHy4293dYgVtT9pdoW
| | |__PS8tgw53SnO892Jhweh
| | |__Qufi83bdyg037D7RBif
| | |__Gicuwy8r23ndoijdakr
| |
| |_____UserID5_UserID16
| |_____UserID8_UserID7
| |_____UserID3_UserID8
|
|_______users每当用户登录应用程序时,他们都会看到他们的联系人列表。当他们选择一个聊天时,我会使用一些Javascript来组合他们的聊天记录,以及他们选定的朋友的Firebase ID来生成聊天ID。然后,这个聊天ID将被创建在数据库中(如果这是他们第一次聊天),或者用来从数据库加载他们以前交换过的消息(如果他们以前曾经聊天过)。
我的问题是,这是否正确的方法?如果使用此方法,可能会遇到哪些问题?例如,如果我试图在未来实现小组对话(与2人以上),我会有问题吗?
对于使用Firebase/a no SQL数据库的人对人(和组)聊天应用程序来说,任何帮助或正确的数据库布局逻辑示例,我都会非常感激。
提前谢谢你!
发布于 2017-01-09 15:24:03
我想指出的是,在创建NoSQL数据库时,需要考虑的最重要的“规则”之一是必须
在视图之后构造数据.
这意味着数据的结构必须是这样的,当您想在视图(可能是html页面)上显示它时,您只需进行一次读取。
因此,为了找到构建数据库的最佳方式,您必须首先查看您的视图。并尝试想象如何读取数据(直接读取和查询)。
您当前的结构看起来很好(就您现在正在构建的结构而言),是的,您在创建组聊天时可能会遇到一些问题。我建议使用这样的方法:

您将注意到,这样,您实际上可以添加更多的参与者,每次聊天很容易。请注意,这不应该是您唯一的节点。您必须创建其他节点,如用户(存储用户详细信息)和消息(存储每个聊天消息)等等,我建议您观看David East面向SQL开发人员的Firebase数据库。
https://stackoverflow.com/questions/41549507
复制相似问题