我正在使用firebase实时数据库。我不想获取特定父节点的所有子节点,我关心的是特定节点,而不是兄弟节点。获取所有兄弟节点会增加我在firebase中的计费,因为会获取额外的XXX MB数据。我正在使用NodeJs管理库来获取它。
添加示例JSON
{
"phone" : {
"shsjsj" : {
"battery" : {
"isCharging" : true,
"level" : 0.25999999046325684,
"updatedAt" : "2018-05-15 12:45:29"
},
"details" : {
"deviceCodeName" : "sailfish",
"deviceManufacturer" : "Google",
"deviceName" : "Google Pixel",
},
"downloadFiles" : {
"7bfb21ff683f8652ea390cd3a380ef53" : {
"uploadedAt" : 1526141772270,
}
},
"token" : "cgcGiH9Orbs:APA91bHDT3mI5L3N62hqUT2LojqsC0IhwntirCd6x0zz1CmVBz6CqkrbC",
"uploadServer" : {
"createdAt" : 1526221336542,
}
},
"hshssjjs" : {
"battery" : {
"isCharging" : true,
"level" : 0.25999999046325684,
"updatedAt" : "2018-05-15 12:45:29"
},
"details" : {
"deviceCodeName" : "sailfish",
"deviceManufacturer" : "Google",
"deviceName" : "Google Pixel",
},
"downloadFiles" : {
"7bfb21ff683f8652ea390cd3a380ef53" : {
"uploadedAt" : 1526141772270,
}
},
"token" : "cgcGiH9Orbs:APA91bH_oC18U56xct4dRuyw9qhI5L3N62hqUT2LojqsC0IhwntirCd6x0zz1CmVBz6CqkrbC",
"uploadServer" : {
"createdAt" : 1526221336542,
}
}
}
}
在上面的示例JSON文件中,我想要获取所有phone-> $ deviceId->令牌。目前,我正在获取整个手机对象,然后我遍历所有手机ID以获取令牌。这会增加我的数据库下载使用率并增加结算。我只关心所有设备的令牌。令牌的兄弟姐妹是不必要的。
答案 0 :(得分:1)
对实时数据库的所有查询都会获取所请求位置下的所有内容。没有办法限制该地点下的某些儿童。如果您只想要某个位置的某些孩子,而不是该位置下的所有孩子,则您必须分别查询每个孩子。或者,您可以重新构建或复制数据以支持您要执行的特定查询 - 对于nosql类型数据库,复制很常见。