Javascript 密钥在firebase上重复
我从Firebase获得了重复的“密钥”,我没有找到任何与文档相关的内容。在这方面有经验的人谁能传授知识,知道为什么会发生这种情况,以及如何避免这种“错误” 我刚刚创建了一个函数来获取公司包含的所有购物中心,然后通过每个购物中心获取他们的lat lng。但“巴拉购物”正在重演 代码:Javascript 密钥在firebase上重复,javascript,firebase,firebase-realtime-database,Javascript,Firebase,Firebase Realtime Database,我从Firebase获得了重复的“密钥”,我没有找到任何与文档相关的内容。在这方面有经验的人谁能传授知识,知道为什么会发生这种情况,以及如何避免这种“错误” 我刚刚创建了一个函数来获取公司包含的所有购物中心,然后通过每个购物中心获取他们的lat lng。但“巴拉购物”正在重演 代码: function searchAllMarkers(){ var markers = firebase.database().ref('/').child('aliansce'); var ar
function searchAllMarkers(){
var markers = firebase.database().ref('/').child('aliansce');
var arrMarkers = [];
markers.on('child_added', function(snap){
arrMarkers = [...arrMarkers, snap.key];
console.log(arrMarkers);
for(m in arrMarkers){
console.log(arrMarkers[m])
var markers = firebase.database().ref('/aliansce/').child('' + arrMarkers[m] +'/marker/markerCoordinates/');
markers.on('child_added', function(snap){
console.log(snap.val());
});
}
});
}
添加的
child\u
回调将分别为每个子节点调用,因此对barrashopping
调用一次,对viapark
调用一次
每次调用它时,您都会将节点添加到一个数组中,然后使用console.log(arrmakers[m])
记录该数组
child\u
为barrashopping
激发时,您的数组包含[barrashopping]
,您可以记录barrashopping
为
viapark触发,因此您的数组现在包含
[barrashopping,viapark],您可以登录
barrashopping,viapark`和的频率就越高。防止这种情况发生的一种方法是侦听值
事件,该事件对与查询匹配的所有子级触发一次:
function searchAllMarkers(){
var markers = firebase.database().ref('/').child('aliansce');
var arrMarkers = [];
markers.once('value', function(parent){
parent.forEach(function(snap) {
arrMarkers = [...arrMarkers, snap.key];
for(m in arrMarkers){
var markers = firebase.database().ref('/aliansce/').child('' + arrMarkers[m] +'/marker/markerCoordinates/');
markers.once('child_added', function(snap){
console.log(snap.val());
});
}
console.log(arrMarkers);
}
});
}
我已经试过了,但是它仍然重复这个键的“key”和“val()”。是的,日志仍然在错误的地方。现在修好了。但我也建议您在代码中设置一个断点,并对其进行一次或两次单步检查,以查看它是如何流动的,以及打印的内容。理解调试器中发生的事情要比让别人在这里告诉你要容易得多。