Я пытаюсь агрегировать поле в mongodb на основе некоторых условий. Это прекрасно работает, когда есть хотя бы одно совпадение, но в противном случае выдает ошибку. Я хочу, чтобы агрегированное значение равнялось 0, когда совпадений нет. Что нужно изменить в приведенном ниже коде?
Примечание: fromDate
и toDate
переданы через API Payload.
"errorMesssage": "Невозможно прочитать свойство 'количество' из неопределенного"
DTO:
export class MetricsDTO {
fromDate: Date;
toDate: Date;
}
Сервис
async getRevenue(metricClause: Partial<MetricsDTO>) {
if (Object.keys(metricClause).length == 0) {
var rev = await this.bookingsModel.aggregate([
{ $group: { _id: null, amount: { $sum: '$GrossAmount' } } }
])
} else {
var rev = await this.bookingsModel.aggregate([
{ $match: { TxnDate: { $gte: metricClause.fromDate, $lte: metricClause.toDate } } },
{ $group: { _id: null, amount: { $sum: '$GrossAmount' } } }
])
}
return rev[0].amount;
}
Полезная нагрузка
{
"fromDate": "2019-10-24",
"toDate": "2019-10-25"
}