0
我试图从firebase中获取两个对象并在显示之前操作数据。 不幸的是,我只得到其中一个对象,但我不知道为什么。FirebaseObjectObservable不能及时返回对象
以下是代码片段:
page.ts
let item: ItemModel = this.ItemProvider.getItem(itemID);
let itemInfo: ItemInfoModel = this.ItemProvider.getItemInfo(itemID);
provider.ts
item: ItemModel = new ItemModel();
itemInfo: ItemInfoModel = new ItemInfoModel();
getItem(itemID: string): ItemModel {
var subscription = this.db.object(`/items/${itemID}`, { preserveSnapshot: true })
.subscribe(item => {
let i: ItemModel = item.val();
this.item = i;
});
subscription.unsubscribe();
return this.item;
}
getItemInfo(itemID: string): ItemInfoModel {
var subscription = this.db.object(`/itemInfo/${itemID}`, { preserveSnapshot: true })
.subscribe(itemInfo => {
let i: ItemInfoModel = itemInfo.val();
this.itemInfo = i;
});
subscription.unsubscribe();
return this.itemInfo;
}
正如你可以看到这两个功能是相似的,但仍然是getItemInfo不及时返回值。
当我做CONSOLE.LOG在打印page.ts以下
console.log(item); => Object { data... }
console.log(itemInfo); => ItemInfoModel { }
我试图切换的功能的调用和先得到itemInfo,但它不会有任何效果。
我火力的结构是这样的:
- firebase
- items
-KIedkI3983ndK
-name
-img
-price
-actualInfo => KIe3jkdl83dsf
- itemInfo
-KIeDjeidl3njd
-item => KIedkI3983ndK
-info1
-info2
-KIe3jkdl83dsf
-item => KIedkI3983ndK
-info1
-info2
因为我仍然很新的这一点,我什么都试过了我在这里读计算器,但没有找到解决问题的办法。
在getItemInfo的订阅中,我确实有正确的值,但它在调用return语句之前并未写入全局this.itemInfo中。 它在getItem中的连线完全相同的代码工作。
任何想法?