我想得到我的firebase节点的有序列表
inboxMessageFetch(mobileNumber, firebaseToken) {
return firebase.database().ref(`messaging/${mobileNumber}/inbox`).orderByChild("time")
.on('value', snapshot => {
if (snapshot.exists()) {
this.inboxMessages = snapshot.val();
console.log('FB', this.inboxMessages);
}
});
}
答案 0 :(得分:3)
对Firebase数据库执行查询时,可能会有多个结果。因此快照包含这些结果的列表。即使只有一个结果,快照也会包含一个结果的列表。
您在回调中收到的快照包含所有项目的键和值,以及有关其相对排序的信息。当你不幸地打电话给snapshot.val()
时,订购的信息就会丢失。
您的代码需要考虑到这一点,并应使用snapshot.forEach()
按请求的顺序循环结果:
inboxMessageFetch(mobileNumber, firebaseToken) {
firebase.database().ref(`messaging/${mobileNumber}/inbox`).orderByChild("time")
.on('value', snapshot => {
this.inboxMessages = [];
snapshot.forEach((messageSnapshot) {
console.log(messageSnapshot.key, messageSnapshot.val();
this.inboxMessages.push(messageSnapshot.val());
});
console.log(this.inboxMessages);
});
}