首页 > 解决方案 > 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方面做到这一点?

标签: javascriptfirebasereact-nativefirebase-realtime-database

解决方案


我不认为你会有一个简单的方法摆脱这个......

默认情况下查询很深:它们总是返回整个子树。

https://firebase.google.com/docs/firestore/rtdb-vs-firestore#querying

我只能看到两个选项:

  1. 将日志迁移到不同的位置(如果它真的是大量数据,您可以使用 BiqQuery https://cloud.google.com/bigquery之类的东西,或者如果是事件,您可以将它们存储在 Google Analytics 中,这真的取决于关于日志的数量和类型)

  2. 附加多个侦听器而不是单个侦听器(取决于可能是可行的临时解决方案的条目数量):

     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=>{
    
     })
    

推荐阅读