javascript - 或 Firebase 中的查询

标签 javascript firebase firebase-realtime-database

我正在尝试构建一个消息系统。我计划收集消息,然后根据发件人和收件人查询消息。为此,我需要查询例如:所有由 Bob 发送并由 Tony 接收的消息以及由 Tony 发送并由 Bob 接收的所有消息。 我很不清楚如何做这个“或”声明。 截至目前,我有

MessageRef.once('value', function(dataSnapshot) {
  console.log(dataSnapshot.val());
});

返回所有消息。然后我可以做一个 forEach 但它似乎不是很有效。你们有什么建议吗?

此外,您是否认为我构建该消息系统的模型比聊天室好。

谢谢

最佳答案

Firebase 目前只能查询单个子属性。因此,如果您想查询多个属性,则必须将它们合并为一个:

Messages
  -DFHJ3498ua
    from: Tony
    to: Bob
    from_to: Tony_Bob
    message: "Hello Bob, this is Tony"
  -DFHJ3598uz
    from: Bob
    to: Tony
    from_to: Bob_Tony
    message: "Hello Tony, What can I do for you?"
  -EFHJ3498ua
    from: Tony
    to: Bob
    from_to: Tony_Bob
    message: "Can you help me with this Firebase query?"

然后您可以使用以下方法查询从 Bob 到 Tony 的消息:

var ref = new Firebase('https://your.firebaseio.com/Messages');
var query = ref.orderByChild('from_to').equalTo('Bob_Tony');
query.on('value', function(snapshot) {
  console.log(snapshot.val()); // all messages from Bob to Tony
});

在类似聊天的应用程序中,您可能需要考虑实际使用发送方-接收方对作为 key :

Messages
  from_Bob_to_Tony
    -DFHJ3598uz
      from: Bob
      to: Tony
      message: "Hello Tony, What can I do for you?"
  from_Tony_to_Bob
    -DFHJ3498ua
      from: Tony
      to: Bob
      message: "Hello Bob, this is Tony"
    -EFHJ3498ua
      from: Tony
      to: Bob
      message: "Can you help me with this Firebase query?"

使用这种数据结构,您不必运行查询来获取相关消息,而是可以直接查找。

var ref = new Firebase('https://your.firebaseio.com/Messages');
var query = ref.child('from_Bob_to_Tony');
query.on('value', function(snapshot) {
  console.log(snapshot.val()); // all messages from Bob to Tony
});

关于javascript - 或 Firebase 中的查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28034092/

相关文章:

javascript - 使用 javascript 在 IE7 中强制下载文本文件

javascript - 确定范围输入上 "thumb"的移动范围

android - Android Firebase 通知没有自定义声音

firebase - Firestore 查询中的 Flutter 传递文档 ID

android - Firebase 数据库的匿名身份验证权限被拒绝

javascript - 将日期和时间组合成一个日期时间

javascript - 如何使淡入淡出过渡更快 css3?

arrays - 如何正确地将 Firebase 中的数据添加到数组中?

ios - 如何检索用户信息?

arrays - 如何使用 Swift 使用 Firebase GeoFire 查询多个键?