我正在使用Cloud Firestore在Ionic 3上开发一个应用程序。我坚持如何检索从angularfirestorecollection检索的快照中的值。我使用以下函数来访问和处理数据。但我无法理解如何在qd对象中获取单个元素值
getQuoteTotal(status:string){
this.qd=this.quoteprovider
.getQuoteList(status)
.snapshotChanges()
.map(actions => {
return actions.map(a => {
const data = a.payload.doc.data() as Quotation;
const id = a.payload.doc.id;
return { id, ...data }; // <-- how to access this data in rest of the function?
})
})
return Array.from(this.qd)
.map(res=>res.Price)
.reduce((tot,price)=>tot+price,0)
}
目前,这会抛出以下内容
打字稿错误 物业&#39;价格&#39;类型&#39; {}&#39;。
上不存在我的目标是计算集合中所有文档的总价格。即便如此,我也不确定如何访问返回的数据 return(id,... data)
quoteprovider函数定义如下
getQuoteList(status:string): AngularFirestoreCollection<Quotation> {
return this.fireStore.collection<Quotation>(
'/QuoteList',
clause => clause.where('qStatus','==',status)
)}
是否有另一种方法可以使用更简单的valueChanges()而不是snapshotChanges()来访问检索到的数据? 感谢
答案 0 :(得分:0)
从我看到的,
this.qd
是一个Observable,它将在映射后返回Quotations
数组。
在observable上映射后,您需要在数组上使用map
和reduce
。
所以你的最后一次回归看起来像是:
return this.qd.map(quotations=>
quotations.map(res=>res.Price)
.reduce((tot,price)=>tot+price,0));