【问题标题】:Integer increment inside firebase callfirebase调用内的整数增量
【发布时间】:2017-04-15 12:31:09
【问题描述】:

我的整数增量行为很奇怪。在我的最后一次数据库调用中,它被设置为 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;
    });
  }
});

【问题讨论】:

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


    【解决方案1】:

    这是一个异步问题。从数据库中获取profiles 并执行回调函数时,for-loop 已经完成。

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

    希望这是有道理的。

    【讨论】:

    • 对不起,我的意思是相反的。将 chats.child 和 i++ 移至profiles.child 的回调中。问题仍然如前所述,for循环在profile.child之前完成。您需要将增量与profiles.child的增量同步。
    猜你喜欢
    • 1970-01-01
    • 2022-01-12
    • 1970-01-01
    • 2014-07-18
    • 2016-05-24
    • 2014-10-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多