【问题标题】:Firebase realtime database don't retrieve specified childFirebase 实时数据库不检索指定的孩子
【发布时间】:2020-09-16 13:15:22
【问题描述】:

我有这样的数据库结构:

datas
-data1
--name
--city
--date
--logs
---log1
---log2
---log3

-data2
--name
...

现在,我发布将 'logs' 放入 'data' 父级是一个巨大的错误,因为它的用户生成子级并快速成长(其下的数据如此之多),自然会导致延迟下载 'data1' 父级。

通常我用这个拉“data1”:

database().ref('datas/' + this.state.dataID).on('value', function(snapshot) {

... })

我希望我能解释我的问题,我基本上忽略了“日志”孩子(我需要姓名、城市、日期) 随着项目开始并且用户已经在使用它,我需要一个正确的方法。

有没有办法在 firebase 方面做到这一点?

【问题讨论】:

    标签: javascript firebase react-native firebase-realtime-database


    【解决方案1】:

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-08-15
      • 2017-10-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多