首页 文章

正确的Firebase数据库布局为用户提供用户(和组)聊天应用程序?

提问于
浏览
2

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

我目前的计划是给每个聊天自己的ID,其将通过结合独特的火力地堡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数据库的个人(和群组)聊天应用程序的任何帮助或正确数据库布局逻辑的示例,我将非常感激 .

先感谢您!

1 回答

  • 0

    我想指出的一点是,在创建NoSQL数据库时要考虑的最重要的“规则”之一是你必须

    在视图后构建数据 .

    这意味着数据必须以这样的方式构建,当您想要在视图(可能是您的html页面)上显示它时,您只需执行一次读取操作 .

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

    Altought您当前的结构看起来很好(对于您现在正在构建的内容),是的,您在创建群组聊天时可能会遇到一些问题 . 我建议使用这样的东西:

    enter image description here

    您会注意到,通过这种方式,您可以轻松地为每个聊天添加更多参与者 . 请注意,这不是't supposed to be your only node. You would have to create other nodes like users (to store the user details) and messages (store each chat'消息)等为了帮助您,我建议您观看David East's Firebase Database For SQL Developers .

相关问题