【问题标题】:How to find nested values in fire-base database where ids are not known?如何在不知道 id 的 fire-base 数据库中查找嵌套值?
【发布时间】:2019-11-11 12:48:20
【问题描述】:

我正在构建一个以 Firebase 作为后端的聊天应用程序。问题是我在 firebase 数据库中创建了两个表,一个用于存储用户,另一个用于存储消息。 我的表如下...

{
  "chat-group" : {
    "a0d4086c-66f7-4437-a23f-4b8e07da9bb8" : {
      "userId1" : "cdc0f59c-66b2-4bac-abe1-fe89a0e29a28",
      "userId2" : "382a321d-8bcd-4b62-bb4e-25b7c1df4ca2"
    },
    "b9afcd88-0b6a-4e77-8dd7-ea3fc17962b9" : {
      "userId1" : "cdc0f59c-66b2-4bac-abe1-fe89a0e29a28",
      "userId2" : "cb754c6b-1702-47dd-a3b8-b34e970ea9a2"
    }
  },
  "messages" : {
    "a0d4086c-66f7-4437-a23f-4b8e07da9bb8" : {
      "-LtT1kMDQrrkSbIDscnz" : {
        "name" : "Parth Shrivastav",
        "text" : "hello",
        "timestamp" : 1573535811230
      }
    },
    "b9afcd88-0b6a-4e77-8dd7-ea3fc17962b9" : {
      "-LtT1xclHzrnY_xSWrMJ" : {
        "name" : "Parth Shrivastav",
        "text" : "????",
        "timestamp" : 1573535865601
      }
    }
  }
}


我想将 users 表下的聊天 ID 与消息下的聊天 ID 相关联,并在该聊天 ID 的自动生成的 ID 下检索消息。

database().ref('messages/b9afcd88-0b6a-4e77-8dd7-ea3fc17962b9)
        this.ref
            .limitToLast(20)
            .on('child_added', snapshot =>
            snapshot.forEach(msgdata => {
              console.log(msgdata)

通过对数据使用 forEach,数据库似乎表现为静态,并且当数据中似乎有任何新消息可用时不会更新。我需要刷新屏幕以获取任何新数据。

【问题讨论】:

标签: javascript firebase react-native firebase-realtime-database


【解决方案1】:

由于您正在侦听child_added 事件,Firebase 客户端将为messages/b9afcd88-0b6a-4e77-8dd7-ea3fc17962b9 下的每条消息调用您的代码。这意味着您不需要在代码中循环遍历子代snapshot,而可以直接从snapshot 获取消息的属性。

.on('child_added', snapshot =>
  console.log(snapshot.val());
}

【讨论】:

    猜你喜欢
    • 2018-03-12
    • 1970-01-01
    • 1970-01-01
    • 2021-03-24
    • 2019-07-02
    • 1970-01-01
    • 2018-08-30
    • 2021-01-11
    • 1970-01-01
    相关资源
    最近更新 更多