Получить данные из объекта AngularFirestoreCollection
Я разрабатываю приложение на Ionic 3 с Cloud Firestore. Я застрял в том, как извлечь значение из снимка, полученного из коллекции 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)
}
В настоящее время это бросает следующее
Типографская ошибка Свойство 'Price' не существует для типа '{}'.
Моя цель - рассчитать общую цену по всем документам в коллекции. Даже в противном случае я не уверен, как получить доступ к данным, возвращенным return (id,...data)
функция quoteprovider определяется следующим образом
getQuoteList(status:string): AngularFirestoreCollection<Quotation> {
return this.fireStore.collection<Quotation>(
'/QuoteList',
clause => clause.where('qStatus','==',status)
)}
Есть ли альтернативный способ использовать более простой метод valueChanges() вместо snapshotChanges() для доступа к полученным данным? Спасибо
1 ответ
Из того, что я вижу,
this.qd
является наблюдаемой, которая будет возвращать массив Quotations
после картирования.
Вам нужно использовать map
а также reduce
на массиве после карты на наблюдаемой.
Так что ваше последнее возвращение будет выглядеть так:
return this.qd.map(quotations=>
quotations.map(res=>res.Price)
.reduce((tot,price)=>tot+price,0));