gpt4 book ai didi

ios - 使用 Firebase 按对话对聊天进行分组

转载 作者:行者123 更新时间:2023-12-02 07:35:49 25 4
gpt4 key购买 nike

我想使用 Firebase 按对话对聊天进行分组。

我有下表:

Chat
- id
- from
- to
- message
- date

我想使用 Firebase 实现以下 SQL 查询:

  1. SELECT * FROM chat where id = 'XX' order by date

  2. 从聊天组中选择 * 按 ID 按日期排序

如何使用 Firebase 执行此操作?

我认为要做#1,我可以这样做:

var chatMessagesRef = new Firebase(‘MY.firebaseio.com/chat_messages/chat_id’);
chatMessagesRef.on(‘child_added’, function(snap) {
console.log( snap.val() );
});

但是我该怎么做#2呢?还有我怎样才能用日期排序来做到#1?

最佳答案

对于组织到单独房间或聊天对话的聊天,请考虑将您的结构修改为以下内容:

/chat_messages/<room-id>/<message-id>/<message-data>

使用此结构,您可以使用您选择的特定名称创建新的房间/对话 ID,也可以使用 .push() 创建 Firebase 生成的名称。每当您想向该房间写入新消息时,请执行以下操作:

var chatMessagesRef = new Firebase('<YOUR-FIREBASE>.firebaseio.com/chat_messages');
function sendMessage(roomId, message) {
chatMessagesRef.child(roomId).push(message);
}

Firebase 本质上有两种查询数据的方式:按路径和按优先级(有关详细信息,请参阅 Firebase Blog: Denormalizing Your Data is Normal。Firebase 推送 ID 会自动生成以按时间顺序排序,因此您可以获取 n使用 limit() 查询的任何对话的最新消息,例如:

chatMessagesRef.child(roomId).limit(20).on('child_added', function(snapshot) { ... });

或者,您可以通过删除上述语句中的 limit() 查询来获取对话的所有消息,并按时间顺序自动排序。

如果您还没有,请查看Firechat ,这是 Firebase 的官方开源聊天客户端,包括完整记录的 JavaScript 客户端、数据结构和聊天安全规则。

关于ios - 使用 Firebase 按对话对聊天进行分组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17619577/

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