我正在尝试使用设置代码通过Firebase实时数据库设置一些内容,但是在此之前,我需要使用一次快照来获取值并对其进行更新。
当我有一个包含字符串的数组时。)array[0] = "aaa"; array[1] = "bbb";
我应该能够获取每个字符串,但是我只获取数组的最后一个元素。
首先,数组包含{ name:"name", num:2, isEmpty:false }
之类的对象,因此我尝试将其修复为仅包含字符串
使用array.push("string");
,但仍然出现相同的错误。
在使用once('value',snapshot){...}
之前,我从数组中获取元素没有问题,但是当我使用once()
时,我仅使用无效索引获取了数组的最后一个元素。
array[0] = 'aaaa'; array[1] ='bbbb';
for(var i=0;i<array.length;i++){
alert(array[i]+' '+i);
//this works fine, alerts aaaa 0, bbbb 1
firebase.database().ref('/Something/').child(array[i]).child('size').once('value',snap=>{
alert(array[i]+' '+i);
//alerts bbbb 2, bbbb 2, I really don't get the issue, snap.val() works fine tho but only get bbbb's snap.val()
});
}
这是示例代码,我尝试在once()
内设置某些内容,但它仅为'bbbb'path的孩子设置。它永远不会走“ aaaa”的道路。
它必须警告aaaa 0,bbbb 1,但是为什么我得到bbbb 2,bbbb 2?索引甚至是无效的,数组的长度是2。我真的不知道这个问题。请有人可以帮助我吗?
*我尽了一切努力,更改数组,使用on()
代替once()
,在then()
之后使用once()
,依此类推。一定没有任何问题吧?
答案 0 :(得分:0)
我通过“异步”功能解决了这个问题,任何与我有相同问题的人,只要使另一个异步功能就可以在一次操作中做某事