Ionic firebase 一旦快照出现奇怪的错误

Ionic firebase once snapshot get weird bugs

我正在尝试使用设置代码通过 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' 路径的子级设置。它永远不会继续 'aaaa' 路径。

它必须提醒 aaaa 0,bbbb 1。但是为什么我得到 bbbb 2,bbbb 2?索引甚至无效,数组的长度为2。我真的不知道这个问题。有人可以帮我解决这个问题吗?

*我尽我所能,更改数组,使用 on() 而不是 once(),在 once() 之后使用 then(),等等。但是通过示例代码,一定没有问题吧???

我用 'async' 函数解决了这个问题,任何和我有同样问题的人,只要再做一个异步函数就可以在 once()

中做一些事情