快照一旦出现怪异离子,就会成为离子火力基地

时间:2019-03-22 22:14:57

标签: javascript firebase ionic-framework firebase-realtime-database ionic3

我正在尝试使用设置代码通过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(),依此类推。一定没有任何问题吧?

1 个答案:

答案 0 :(得分:0)

我通过“异步”功能解决了这个问题,任何与我有相同问题的人,只要使另一个异步功能就可以在一次操作中做某事