[英]Return nested collection from firestore as object for angularfire2 and firebase
假設您有以下結構:
shopping-carts (collection)
- shopping-cart 1(doc)
-- dateCreated (field)
-- items (collection)
- shopping-cart 2(doc
-- dateCreated
-- items
.
.
.
那么,我們如何將整個購物車(doc)作為我們定義的ShoppingCart對象
export interface ShoppingCart {
items: ShoppingCartItem[]
dateCreated: string
}
afs.doc('shopping-cart/id').valueChanges()
僅返回dateCreated
afs.doc('shopping-cart/id').collection('items').valueChanges()
返回項目。
簡單的方法來獲得一個並將其創建為對象?
可能不是最好的解決方案,但還是找不到更好的解決方案。
this.shoppingCartsCollection = afs.collection<Servicio>('shopping-carts',
ref => ref.orderBy('dateCreated', 'asc'));
this.shoppingCarts = this.shoppingCartsCollection
.snapshotChanges()
.map(values => {
return values.map(value => {
const shopping-cart = value.payload.doc.data();
const itemsArray = shopping-cart.items;
shopping-cart.observableItems = [];
for (var i = 0, len = itemsArray.length; i < len; i++) {
itemDocRef = itemsArray[i];
value.observableItems.push(afs.doc('items/'+ itemDocRef.id).valueChanges());
}
return shopping-cart;
});
});
像任何其他可觀察的一樣訪問您的項目數據
<div *ngFor="let shoppingCart of shoppingCarts | async">
<p *ngFor="let observableItem of shoppingCart.observableItems">
{{(observableItem | async)?.displayName}}
</p>
</div>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.