我的整数增量表现得很奇怪。在我上次的数据库调用中,它被设置为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;
});
}
});
答案 0 :(得分:0)
这是一个异步问题。当从数据库中取出profiles
并且正在执行回调函数时,for
- 循环已经完成。
尝试在chats.child()
语句的回调函数中移动i++
和profile.child()
语句。
希望这是有道理的。