0

我正在尝试根据某些条件在 mongodb 中聚合一个字段。当至少有一个匹配时,这可以正常工作,但否则会引发错误。当没有匹配时,我想将聚合值设为 0。下面的代码需要修改什么?

注意:fromDatetoDate通过 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"
}
4

1 回答 1

0

这不是导致异常的聚合,这一行导致错误,因为您没有检查 rev 是否​​为空。

   return rev[0].amount;

因此,要处理 null,您可以:

if (rev && rev[0]) {
  return rev[0].amount;
} else {
  return 0;
}
于 2019-10-28T09:20:02.007 回答