这可能是一个奇怪的问题。但是,我的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
但没有子数据的列表,以减少带宽)用法)?
答案 0 :(得分:1)
这对于任何移动SDK都是不可能的。 REST API仅可以使用shallow参数。
答案 1 :(得分:1)
我认为,数据结构应尽可能平坦,以避免嵌套数据。您可以考虑如下重组数据。您可以考虑看看Firebase中的best practices of storing and organizing your data。
{{1}}
当您获得物品时,您也将孩子带到物品下方。因此,请避免嵌套数据。您也可以考虑检查answer here。