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

Firebase web在实时数据库中以阵列形式存储聊天信息

双恩
2023-03-14

我试图用firebase实时数据库做一个聊天应用程序。我将2个用户之间的聊天存储为Firebase中的JSON数组。

最初我当用户用来发送消息时,我用来设置整个聊天数组。但我很快意识到这不是一个好主意,因为阵列将会增长。

等待firebase.database().ref(“chats/”+chatId).set(messages)

let messageRef = firebase.database().ref("chats/" + chatId)
await messageRef.push().set(message);

相反,在使用push后,我得到的是:

实现我想要的最好的方法是什么?

共有1个答案

闻人昊昊
2023-03-14

如您所见,调用push()将为您生成一个密钥。

两种解决方案:

•您可以让Firebase为您生成唯一的密钥,并将JSON对象转换为客户端的数组:

firebase.database().ref("chats/" + chatId).once("value").then(data => {
    console.log(Object.values(data.val()));
});
firebase.database().ref("chats/" + chatId).child(key).set(msg);
 类似资料:
  • 所以我试图将一些数据存储到我的实时数据库中。我目前有两个独立的视图控制器,一个用于用户注册,另一个用于用户选择其配置文件图像并能够更改该图像。在注册页面上,我将“用户名”保存到firebase,如下所示: 对于个人资料图像,我有这样保存的数据 我希望这两个数据都保存在“用户”下-

  • 我正在开发一个Android聊天应用程序,似乎我需要通过FCM发送每条消息,还需要保存到实时数据库。 我使用Firebase realtime DB存储和发送消息。我仍然需要发送每个消息(或至少消息id)也通过FCM。我担心如果我不这样做,并且只在应用程序在后台时发送FCM,用户可能会错过一些传入的消息。 将侦听器放在服务上似乎不够可靠(如果android干掉了服务怎么办?直到我重新启动它,我可能

  • 每当我在这个集合中保存一些数据时,我就声明了一个类LoanDetails和一个包含BigDecimal类型loanAmount的字段 它以字符串形式存储在mongo db数据库中 我试图在loanAmount字段上添加注释

  • < code >在此输入代码我在android应用程序中有一个注册表,用户可以在其中输入他们的详细信息。我尝试将数据存储到firebase中,数据正在存储,但问题是电话号码、年龄和姓名都将被存储。如何解决这个问题?请帮帮忙! 助手类 公共类UserHelperClass { } 数据存储到Firebase代码 从其他活动获取数据 将数据传递给另一个活动 公共类注册活动扩展了应用程序兼容性活动 {