如何在不知道 id 的 fire-base 数据库中查找嵌套值?

我正在构建一个以 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

      }

    }

  }

}



我想将用户表下的聊天 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,数据库似乎是静态的,并且在数据中似乎有任何新消息可用时不会更新。我需要为任何新数据刷新屏幕。


吃鸡游戏
浏览 124回答 1
1回答

侃侃尔雅

由于您正在侦听child_added事件,因此 Firebase 客户端将为messages/b9afcd88-0b6a-4e77-8dd7-ea3fc17962b9. 这意味着您不需要遍历snapshot代码中的子项,而可以直接从snapshot..on('child_added', snapshot =>  console.log(snapshot.val());}
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript