Функциональность:
У меня есть проект Angular, для которого я должен создать график, показывающий invoiceDate и saleAmount. Данные извлекаются из коллекции счетов.
var invoiceRef = this.afs.collection<Invoice>('invoices',
ref=> ref.orderBy('creationDate','desc'));
Здесь я получаю saleAmount и invoiceDate для каждого счета.
Проблема
Как подсчитать saleAmount для каждой даты счета-фактуры?
В традиционном SQL вы бы написали что-то вроде
SELECT COUNT(saleAmount) FROM invoice GROUP BY invoiceDate;
Как сделать то же самое, используя запросы angularfire для firestore?
Не уверен, что это можно сделать непосредственно из запроса firestore, но вы можете реализовать функцию, которая делает это после получения данных (или раньше, с облачные функции).
Это может выглядеть так:
const groupedInovices = {};
invocies.forEach((inovice) => {
groupedInovices[invoice.date] = groupedInovices[invoice.date] ? groupedInovices[invoice.date]++ : 1;
});
В итоге вы получите объект, который выглядит следующим образом:
{
"05/30/2019": 20
"05/29/2019: 13
}
Я думал так же. Я тоже в итоге сделал что-то подобное. Хотя спасибо за подтверждение.