firebase调用内的整数增量

时间:2017-04-13 19:49:27

标签: javascript angular typescript firebase firebase-realtime-database

我的整数增量表现得很奇怪。在我上次的数据库调用中,它被设置为2,2,2而不是从0,1,2开始。有人看到问题吗?

let chats = firebase.database().ref(`/userProfile/${this.userAuth.uid}/messages/`);
let profiles = firebase.database().ref('/userProfile');
chats.on('value', (snapshot) => {
  let i = -1;
  this.messagesList = [];

  for (let key in snapshot.val()) {
    i++;

    chats.child(key).limitToLast(1).on('value', (data) => {
      this.messagesList[i] = data.val();
      for (let message in this.messagesList[i]) {
        this.messagesList[i].conversation_key = message;
      }
      console.log(i); // RETURNS 0,1,2
    });

    console.log(i); // RETURNS 0,1,2

    profiles.child(key).on('value', (data) => {
      console.log(i); // RETURNS 2,2,2
      this.messagesList[i].firstname = data.val().firstname;
    });
  }
});

1 个答案:

答案 0 :(得分:0)

这是一个异步问题。当从数据库中取出profiles并且正在执行回调函数时,for - 循环已经完成。

尝试在chats.child()语句的回调函数中移动i++profile.child()语句。

希望这是有道理的。