【发布时间】: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,数据库似乎表现为静态,并且当数据中似乎有任何新消息可用时不会更新。我需要刷新屏幕以获取任何新数据。
【问题讨论】:
-
1) 请将示意图数据库表示替换为实际的 JSON(作为文本,无屏幕截图)。您可以通过单击Firebase Database console 上溢出菜单 (⠇) 中的“导出 JSON”链接来获取此信息。 2) 你能用
$chatID的硬编码值重现问题吗?如果是这样,请编辑您的问题以仅包含该硬编码值。这也会将/users节点排除在潜在问题之外。 -
当然,我已经编辑了你提到的问题
标签: javascript firebase react-native firebase-realtime-database