用户对用户(和组)聊天应用程序的Firebase数据库布局是否正确?

用户对用户(和组)聊天应用程序的Firebase数据库布局是否正确?,firebase,firebase-realtime-database,Firebase,Firebase Realtime Database,我正在尝试了解使用Firebase数据库存储和检索聊天应用程序(基于web)的用户对用户对话的最佳数据库结构 我目前的计划是为每个聊天室提供自己的ID,该ID将通过组合两个聊天参与者的唯一Firebase ID(如UserID1\u UserID2)创建,例如:fq5d0jwlqdqdlryzevbxkrp72bb2\u gsibxemi4jonwhrzaq528kjkdmbm8此聊天室ID将存储在数据库中,将包含两个参与者之间发送的消息 布局示例: MYAPP |_______conv

我正在尝试了解使用Firebase数据库存储和检索聊天应用程序(基于web)的用户对用户对话的最佳数据库结构

我目前的计划是为每个聊天室提供自己的ID,该ID将通过组合两个聊天参与者的唯一Firebase ID(如
UserID1\u UserID2
)创建,例如:
fq5d0jwlqdqdlryzevbxkrp72bb2\u gsibxemi4jonwhrzaq528kjkdmbm8
此聊天室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(如果这是他们第一次聊天),或者使用它加载他们之前交换的消息(如果他们以前聊天过),从数据库中

我的问题是,这是正确的方法吗?如果使用此方法,可能会遇到哪些问题?例如,如果我将来尝试实施小组对话(与两人以上)会有问题吗

对于使用Firebase/AnoSQL数据库的人对人(和组)聊天应用程序,如果您能提供任何帮助或提供正确的数据库布局逻辑示例,我将不胜感激


提前谢谢你

> P> >我想指出的是创建NoSQL数据库时要考虑的最重要的“规则”之一,即您必须

在视图之后构造数据。

这意味着必须以这样的方式构造数据,即当您希望在视图(可能是html页面)上显示数据时,只需进行一次读取

因此,为了找到构造数据库的最佳方法,必须首先查看视图。并尝试想象如何读取数据(直接读取和查询)

虽然您当前的结构看起来不错(对于您现在正在构建的内容),但是,是的,在创建群聊时您可能会遇到一些问题。我建议您使用以下方法:

您会注意到,通过这种方式,您实际上可以轻松地在每次聊天中添加更多参与者。请注意,这不是您的唯一节点。您必须创建其他节点,如用户(存储用户详细信息)和消息(存储每个聊天室的消息)等
为了帮助您,我建议您观看。

我也想到了这种方法。。。但是,基于其中一个需求,您将如何隔离只有用户1和用户2但没有用户3的聊天?举个例子。我已登录并单击用户2,只想查看与该用户的聊天。另请参阅我们的,其中包括全功能聊天。