Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/101.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 使用Firebase按对话分组聊天_Ios_Firebase - Fatal编程技术网

Ios 使用Firebase按对话分组聊天

Ios 使用Firebase按对话分组聊天,ios,firebase,Ios,Firebase,我想使用Firebase通过对话进行分组聊天 我有下表: Chat - id - from - to - message - date 我想使用Firebase实现以下SQL查询: 从聊天室中选择*id='XX'按日期排序 按id从聊天组中选择*按日期排序 我如何使用Firebase进行此操作 我认为要做到1,我可以做到: var chatMessagesRef=new Firebase'MY.firebaseio.com/chat_messages/chat_id'; chatMessage

我想使用Firebase通过对话进行分组聊天

我有下表:

Chat
- id
- from
- to
- message
- date
我想使用Firebase实现以下SQL查询:

从聊天室中选择*id='XX'按日期排序

按id从聊天组中选择*按日期排序

我如何使用Firebase进行此操作

我认为要做到1,我可以做到:

var chatMessagesRef=new Firebase'MY.firebaseio.com/chat_messages/chat_id'; chatMessagesRef.on'child_added',functionsnap{ console.log snap.val; };
但是我怎么能做到呢?此外,我还可以做1的日期排序?

< P>聊天,将其组织成单独的房间或聊天会话,考虑修改您的结构如下:

/chat_messages/<room-id>/<message-id>/<message-data>
var chatMessagesRef = new Firebase('<YOUR-FIREBASE>.firebaseio.com/chat_messages');
function sendMessage(roomId, message) {
  chatMessagesRef.child(roomId).push(message);
}
Firebase基本上有两种查询数据的方法:按路径和按优先级。有关更多信息,请参阅。Firebase推送ID会自动生成,以便按时间顺序排序,因此您可以使用限制查询获取任何对话的n条最新消息,例如:

chatMessagesRef.child(roomId).limit(20).on('child_added', function(snapshot) { ... });
或者,通过删除上述语句中的限制查询,您可以获取会话的所有消息,并按时间顺序自动排序


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

您将如何生成发送人和接收人都可以访问的roomId?@CyrilIvarGarcia I将生成一个新的,唯一的Firebase“推送”id“自动”生成id,然后将可用房间id列表存储在另一个位置,如“/rooms”。该列表中的ID可能对发送者和接收者都是公共的/可访问的。我不知道这是否有帮助,但我有一个git存储库来说明我是如何创建消息传递功能的。它不会马上起作用,但也许会给你一个主意。