javascript - Firebase 实时数据库不检索指定的孩子
问题描述
我有这样的数据库结构:
datas
-data1
--name
--city
--date
--logs
---log1
---log2
---log3
-data2
--name
...
现在,我发布了将“日志”放在“数据”父级中是一个巨大的错误,因为它的用户生成了子级并且成长很快(它下面有这么多数据),并导致自然地延迟下载“data1”父级。
通常我用这个拉“data1”:
database().ref('datas/' + this.state.dataID).on('value', function(snapshot) {
... })
我希望我能解释我的问题,我基本上忽略了“日志”孩子(我需要姓名、城市、日期)随着项目开始并且用户已经在使用它,我需要一个正确的方法。
有没有办法在firebase方面做到这一点?
解决方案
我不认为你会有一个简单的方法摆脱这个......
默认情况下查询很深:它们总是返回整个子树。
https://firebase.google.com/docs/firestore/rtdb-vs-firestore#querying
我只能看到两个选项:
将日志迁移到不同的位置(如果它真的是大量数据,您可以使用 BiqQuery https://cloud.google.com/bigquery之类的东西,或者如果是事件,您可以将它们存储在 Google Analytics 中,这真的取决于关于日志的数量和类型)
附加多个侦听器而不是单个侦听器(取决于可能是可行的临时解决方案的条目数量):
let response={ name:null, city:null, date:null } const refs = ['name', 'city', 'date'].map(key=>database().ref(`datas/${this.state.dataID}/${key}') refs.forEach(ref=>ref.on('value',snapshot=>{ })
推荐阅读
- c# - 执行查询时窗体冻结
- python - 如何在 SqlAlchemy / Mysql 中存储时区感知日期时间值?
- amazon-web-services - Redshift 表所有权和删除查询
- javascript - 将 json/csv 文件(从 API 获取)保存到电子表格文档而不使用循环 - Google Apps 脚本
- javascript - 正则表达式 - 检查字符串是否包含部分 URL 并转换为链接
- asp.net - 如何将数据从一个视图发送到另一个视图,它是品牌、型号等。它不是一种形式
- python - 在python中将我的部分输出代码更改为字母数字
- javascript - net::ERR_ABORTED 4 在 nextjs 中出现此错误
- neo4j - Neo4J 动态数据模型
- devops - 如何使用具有特定标志值的 DevOps Api 获取工作项列表