javascript - 如何在不知道 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
}
}
}
}
我想将 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 用于数据,数据库似乎表现为静态,并且当数据中似乎有任何新消息可用时不会更新。我需要刷新屏幕以获取任何新数据。
解决方案
由于您正在侦听child_added
事件,因此 Firebase 客户端将为messages/b9afcd88-0b6a-4e77-8dd7-ea3fc17962b9
. 这意味着您不需要snapshot
在代码中循环遍历子项,并且可以直接从snapshot
.
.on('child_added', snapshot =>
console.log(snapshot.val());
}
推荐阅读
- python - 用(有时)不规则数组初始化一个 numpy 数组
- python - 熊猫:在给定条件下如果值太大或太小则替换值
- python-3.x - 在python中实现二次核感知器算法
- jenkins - 无法使用 Jenkins 自动化将文件放入现有目录结构中
- git - 在 git 中处理多个陈旧的分支
- oauth - CAS - OAUTH - AuthenticationPolicy
- php - PHP 对象 - 使用 If 语句定义属性的正确方法
- html - 我可以在 git GitHub Pages 上传的页面中使用数据库吗?
- docker - 为什么`docker run -d centos tail -f /dev/null`命令可以让docker容器在后台运行?
- php - 我的查询不适用于待处理和批准