gpt4 book ai didi

arrays - 如何将可观察到的 firebase 列表中的数据存储到数组中?

转载 作者:太空狗 更新时间:2023-10-29 17:54:47 24 4
gpt4 key购买 nike

我正在尝试使用 angular 2 将数据从 firebase 复制到数组。但我无法将数据推送到数组中。

代码如下:

变量:

uid: string = '';
agencyItems: FirebaseListObservable<any[]>;
trackerItems: FirebaseListObservable<any[]>;
agencyID: any[] = [];

getData()

this.af.auth.subscribe(auth => {
if (auth) {
this.uid = auth.auth.uid;
}
});

this.getAgencyData();

console.log("AgentID: ",this.agencyID);
console.log("Array Length = ",this.agencyID.length); //PROBLEM HERE: Array agencyID is still 0.

this.getTrackerData();

getAgencyData():

console.log("Fetching agency data");
this.agencyItems = this.af.database.list('/agencies/',{preserveSnapshot:true});
this.agencyItems.subscribe(snapshots => {
snapshots.forEach(snapshot => {
console.log(snapshot.val()._id);
this.agencyID.push(snapshot.val()._id);
});
});

getTrackerData():

for (let i = 0; i < this.agencyID.length; i++)     
{
console.log("Fetching Tracker data");
this.trackerItems = this.af.database.list('/tracker/' + this.agencyID[i]);
this.trackerItems.subscribe(trackerItems => trackerItems.forEach(Titem =>
console.log("Tracker name: " + Titem.name),
));
}

这是调试控制台屏幕截图:

console screenshot

由于我是网络编程的新手,所以一些代码可能看起来完全没有必要。

我在这段代码中做错了什么?我该如何实现。

最佳答案

问题在于您正在检查数组长度的位置,或者更好的时间。您在获取数据时进行异步调用,但在返回数据之前检查数组的长度。因此数组仍然是空的。

getAgencyData() 中尝试以下操作:

console.log("Fetching agency data");
this.agencyItems = this.af.database.list('/agencies/',{preserveSnapshot:true});
this.agencyItems.subscribe(snapshots => {
snapshots.forEach(snapshot => {
console.log(snapshot.val()._id);
this.agencyID.push(snapshot.val()._id);
console.log("Array Length = ",this.agencyID.length); // See the length of the array growing ;)
});
// EDIT
this.getTrackerData();
});

关于arrays - 如何将可观察到的 firebase 列表中的数据存储到数组中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42133128/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com