gpt4 book ai didi

javascript - 用于即时消息系统的 Firebase/NoSQL 模式

转载 作者:搜寻专家 更新时间:2023-10-30 22:59:06 25 4
gpt4 key购买 nike

我正在为一个应用程序使用 Firebase,内置的实时功能似乎非常适合即时消息传递。我只是很难想出应该如何设置数据库。理想情况下,它是这样的:

messages: {
<messageId>: {
from: <userId>,
to: <userId>,
text: <String>,
dateSent: <Date>
dateRead: <Date>
}
}

这对于发送消息来说没问题,但是阅读消息线程就变得困难了。我需要在(可能很大的)消息列表中查询与当前线程的发送者和接收者匹配的消息,然后按 dateSent 对这些消息进行排序。如果 Firebase 的新查询 API 可以做到这一点,那么我还没有弄清楚具体如何去做。

最佳答案

查询大量消息绝不是一个好主意。如果您想要一个快速执行的 Firebase/NoSQL 应用程序,您需要对数据建模以允许快速查找。

在聊天场景中,这通常意味着您要将聊天室建模到数据结构中。因此,与其存储一长串消息,不如分别存储每个聊天“房间”的消息。

messages
<roomId>
<messageId1>: "..."
<messageId2>: "..."
<messageId3>: "..."

现在您无需查询即可访问聊天消息,只需 ref.child(roomId).on(...

如果你想要一个确保相同的两个用户最终进入同一个房间的持久映射,请查看 Best way to manage Chat channels in Firebase

关于javascript - 用于即时消息系统的 Firebase/NoSQL 模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36182244/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com