Android上的Firebase如何仅返回没有子节点的节点

时间:2018-11-16 20:54:21

标签: android firebase firebase-realtime-database

这可能是一个奇怪的问题。但是,我的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但没有子数据的列表,以减少带宽)用法)?

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:1)

我认为,数据结构应尽可能平坦,以避免嵌套数据。您可以考虑如下重组数据。您可以考虑看看Firebase中的best practices of storing and organizing your data

{{1}}

当您获得物品时,您也将孩子带到物品下方。因此,请避免嵌套数据。您也可以考虑检查answer here