我需要扫描所有的firebase,进行以下查询,我已经在文档中研究过但未找到:
1)我需要计算数据库中有多少个购物中心。
2)我需要从每个商场获取数字数组,以便我可以插入 进入" .push()"功能在谷歌地图api和创建lat和 lng为每个多边形。
我将解释我的firebase架构的外观:
我有几个"购物中心管理员",在这个JSON中 他们自称(Aliansce,New Company)。
在每个管理员购物中心内,我有几个购物中心 其中(Aliansce:Bangu,纽约,ny2)和(新公司:luc2, luc1)。
在每个购物中,我都有每个购物的ID。
在ID中,我有ID的日期。
在ID的日期里,我有我的商店 商场。
FIREBASE DATABASE:
{
"aliansce" : {
"AliansceShopping1" : {
"1" : {
"loja1" : {
"coordenadasLat" : [ -33.564, -35.259, -35.155 ],
"coordenadasLng" : [ 149.276, 148.705, 150.1 ],
"nomefantasia" : "loja1"
}
},
"2" : {
"loja2" : {
"coordenadasLat" : [ 2.258579, -59.008697, -55.493581, 13.727475 ],
"coordenadasLng" : [ -95.338008, -82.330197, -14.127078, -37.857544 ],
"nomefantasia" : "loja2"
}
}
},
"AliansceShopping2" : {
"3" : {
"loja1" : {
"coordenadasLat" : [ -33.564, -35.259, -35.155 ],
"coordenadasLng" : [ 149.276, 148.705, 150.1 ],
"nomefantasia" : "Loja1"
}
},
"4" : {
"loja2" : {
"coordenadasLat" : [ 2.258579, -59.008697, -55.493581, 13.727475 ],
"coordenadasLng" : [ -95.338008, -82.330197, -14.127078, -37.857544 ],
"nomefantasia" : "Loja2"
}
}
},
"versoes" : {
"bangu" : {
"190001" : "13/11/2017",
"201701" : "13/11/2017",
"201706" : "13/11/2017"
}
}
},
"novoAdm" : {
"novoAdmShopping1" : {
"1n" : {
"loja1" : {
"coordenadasLat" : [ -33.564, -35.259, -35.155 ],
"coordenadasLng" : [ 149.276, 148.705, 150.1 ],
"nomefantasia" : "loja1"
}
},
"2n" : {
"loja2" : {
"coordenadasLat" : [ 2.258579, -59.008697, -55.493581, 13.727475 ],
"coordenadasLng" : [ -95.338008, -82.330197, -14.127078, -37.857544 ],
"nomefantasia" : "loja2"
}
}
},
"novoAdmShopping2" : {
"3n" : {
"loja1" : {
"coordenadasLat" : [ -33.564, -35.259, -35.155 ],
"coordenadasLng" : [ 149.276, 148.705, 150.1 ],
"nomefantasia" : "Loja1"
}
},
"4n" : {
"loja2" : {
"coordenadasLat" : [ 2.258579, -59.008697, -55.493581, 13.727475 ],
"coordenadasLng" : [ -95.338008, -82.330197, -14.127078, -37.857544 ],
"nomefantasia" : "Loja2"
}
}
},
"versoes" : {
"nwVer" : {
"190001" : "13/11/2017",
"201701" : "13/11/2017",
"201706" : "13/11/2017"
}
}
}
}
OBS:我使用JAVASCRIPT
CODE:
function initFireBase(){
var config = {
apiKey: "",
authDomain: "",
databaseURL: "",
projectId: "",
storageBucket: "",
messagingSenderId: ""
};
firebase.initializeApp(config);
var ref = firebase.database().ref('/'); // INICIA NA RAIZ DO NÓ
var rootDatabase = new Array();
var childRootDatabase = new Array();
var childParentDatabase = new Array();
var tst;
var tst2;
ref.on('value', function(snap){
// PERCORRE TODOS OS "CHILD'S" DO {REF}
snap.forEach(function(rootSnapshot){
rootDatabase = [...rootDatabase, rootSnapshot.key]; // CRIA UM ARRAY PARA AS "KEYS" DOS "CHILD'S"
});
for(a in rootDatabase){
tst = firebase.database().ref('' + rootDatabase[a]);
tst.on('child_added', function(snap){
snap.forEach(function(sna){
childRootDatabase = [...childRootDatabase, sna.key];
});
});
for(b in childRootDatabase){
tst2 = firebase.database().ref('/' + rootDatabase[a] + '/' + childRootDatabase[b]);
console.log(tst2.key);
}
}
});
我能够访问所有这些孩子,但我无法获得coordinatesLat和lng;
答案 0 :(得分:0)
我不确定我是否理解你要完成的任务。但是代码看起来不是最理想的,所以希望对它的解释会对你有所帮助。
由于您从根目录加载值,因此无需再使用任何嵌套侦听器。相反,您可以迭代(嵌套)快照并获取所需的数据。执行代码当前执行操作的更惯用的方法是:
ref.on('value', function(snap){
mallKeys = [];
snap.forEach(function(adminSnapshot){
adminSnapshot.forEach(function(mallSnapshot) {
mallKeys.push(mallSnapshot.key);
});
});
console.log("There are "+mallKeys.length+" malls");
});