【问题标题】:Firebase on android how to return only the node without childrenandroid上的Firebase如何只返回没有子节点的节点
【发布时间】:2018-11-16 20:54:21
【问题描述】:

这可能是一个奇怪的问题。但是,我的 firebase 数据库的免费配额用完了,在开始付费之前,我想优化我的一些 firebase 查询。

我正在观察我们可以管理数据库的 firebase 控制台,我注意到它只向我们显示每个级别的节点。要查看子节点,我们必须单击 + 按钮(节点名称旁边)或节点本身。

我相信这种行为旨在避免一次请求整个数据库,这会导致巨大的流量和资源消耗。我也相信 firebase 控制台是基于 firebase 公共 API 构建的,因此我们应该可以实现相同的行为。

我的问题是考虑以下数据库:

{  
   "root":{  
      "node1":{  
         "childA":"a",
         "childB":"b",
         "childC":"c"
      },
      "node2":{  
         "childA":"2a",
         "childB":"2b",
         "childC":"2c"
      },
      "node3":{  
         "childA":"3a",
         "childB":"3b",
         "childC":"3c"
      },
      "node4":{  
         "childA":"4a",
         "childB":"4b",
         "childC":"4c"
      },
      "lululu":{  
         "childA":"1a",
         "childB":"2b",
         "childC":"3c"
      },
      "node1214":{  
         "childA":"1a",
         "childB":"1b",
         "childC":"1c"
      },
      "node10":{  
         "childA":"a",
         "childB":"b",
         "childC":"c"
      }
   }
}

如何获取root 下没有内容的节点列表(例如["node1", "node2", "node3"...] 之类的列表或正确的Map 但没有子数据(以减少带宽使用)?

【问题讨论】:

    标签: android firebase firebase-realtime-database


    【解决方案1】:

    这对于任何移动 SDK 都是不可能的。只有使用 shallow 参数的 REST API 才有可能。

    【讨论】:

      【解决方案2】:

      在我看来,数据结构应该尽量扁平化,避免嵌套数据。您可以考虑按如下方式重组您的数据。您可以考虑查看 Firebase 中的 best practices of storing and organizing your data。

      {  
         "root": {  
             "node1":"1",
             "node2":"2",
             "node3":"3"
         },
      
          "nodes" : {  
             "1": {  
                 "childA":"a",
                 "childB":"b",
                 "childC":"c"
             },
             "2":{  
                 "childA":"2a",
                 "childB":"2b",
                 "childC":"2c"
             },
             "3":{  
                 "childA":"3a",
                 "childB":"3b",
                 "childC":"3c"
             }
          }
      }
      

      当你得到项目时,你也会得到项目下的孩子。所以避免嵌套你的数据。您也可以考虑检查answer here。

      【讨论】:

      • 这个模型将解决我的具体问题,但我不会将其用作一般想法......这样所有查询都需要两个请求......我正在查看用户分支,我会用户的 pk 我仍然需要发出两个请求以获取用户数据...无论如何感谢您的帮助
      猜你喜欢
      • 1970-01-01
      • 2010-09-11
      • 1970-01-01
      • 1970-01-01
      • 2023-03-12
      • 1970-01-01
      • 1970-01-01
      • 2018-09-22
      • 2018-10-31
      相关资源
      最近更新 更多