当前位置: 首页 > 知识库问答 >
问题:

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

舒赞
2023-03-14

我试图了解使用Firebase数据库来存储和检索用户对用户对话(基于web)的最佳数据库结构。

我当前的计划是为每个聊天提供自己的ID,该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和他们选择的朋友的Firebase ID组合起来生成聊天ID。然后,这个聊天ID可以在数据库中创建(如果这是他们第一次聊天),或者用来从数据库加载他们以前交换过的消息(如果他们以前聊天过)。

我的问题是,这是正确的使用方法吗?如果我使用这种方法,我会遇到什么问题?例如,如果我将来尝试实施小组对话(与2人以上),我会有问题吗?

共有1个答案

华温书
2023-03-14

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

在视图之后对数据进行结构化。

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

您会注意到,通过这种方式,您实际上可以轻松地为每次聊天添加更多的参与者。请注意,这不是您唯一的节点。您必须创建其他节点,如用户(存储用户详细信息)和消息(存储每个聊天的消息)等。为了帮助您实现这些,我建议您查看David East的Firebase数据库,以供SQL开发人员使用。

 类似资料:
  • 我希望基本上在我的应用程序内翻拍Kik。对于我在firebase聊天应用程序上看到的大多数指南,都有一个主要的消息节点,然后在该节点下面有一个扇出,每个用户都有引用主列表中消息的消息。 根据目前我的Firebase的布局方式,实现类似以下内容会更容易: 因此,当用户向对方发送消息时,我会更新发送者和用户下面的“聊天消息”节点。 有什么理由不这样做吗?我看到每个人都按照我描述的第一种方式进行,但我看

  • 我很难弄清楚如何正确地构造多用户聊天室体系结构。 基本上,该应用程序支持用户之间的私人消息(可以是两个用户之间的消息,也可以是多个用户之间的消息)。如果只在2个用户之间,数据结构真的很容易。 我试图降低成本(我不希望当当前登录的用户正在与某人聊天,而观察者正在获得与该特定聊天无关的所有消息时),并正确地构造数据。如果只有2个用户,我总是可以在当前用户ID下添加受体,并只查询该节点。但是有多个用户(

  • 我尝试使用mvp开发一对一的聊天应用程序,当应用程序第一次运行时,聊天工作正常,消息发送给用户。问题是,当我尝试注册另一个帐户并尝试发送消息时,firebase创建了两个不同的聊天室,但我无法获得消息,因为第二个用户没有检测到聊天室已经创建并创建了另一个聊天室,请帮助我?这是我试图发送消息的代码: 最终字符串room_type_1=chat.getSenderUID()+“_”+chat.getR

  • 我正在构建一个使用Firestore存储大多数数据的应用程序。该应用程序具有聊天功能,我正在考虑使用实时数据库。使用Firebase Firestore vs Realtime Database实现此聊天功能有哪些好处?如果没有区别,我应该什么都使用Firestore吗? 附言:我已经阅读了两个https://firebase.google.com/docs/database/rtdb-vs-fi

  • 我想将聊天应用程序与我的instagram类似的项目集成在一起。我的主要目标是为这个网站的用户提供实时聊天的可能性。我有以下代码,但我一直得到的错误: 这些观点。py: 路由。派克 项目根目录中的asgi.py: 我正在关注Django频道官方网站上的教程。我还试图定制我的消费者,将其保存在数据库中,其模型如下: 来自django。db从django导入模型。contrib。auth。模型导入用户

  • 我们正在构建一个聊天应用程序,一对一聊天是该应用程序的主要目的,所以目前,消息传递速度是我们的第一要务。我们需要一个后端解决方案,我们最初计划使用Firebase实时数据库。但后来Firestore出现了,从那以后,我们看到了Firebase团队对实时数据库Firestore的许多建议。 我们已经使用了实时数据库和Firestore,所以我们非常了解两者的功能和查询能力。对于我们的用例,就特性而言