当零匹配时,猫鼬聚合会引发错误

时间:2019-10-28 06:29:34

标签: mongodb typescript mongoose nestjs

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

注意:fromDatetoDate通过API有效负载传递。

  

“ errorMesssage”:“无法读取未定义的属性'amount'”

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"
}

1 个答案:

答案 0 :(得分:0)

不是引起异常的聚集,这行会导致错误,因为您没有检查rev是否为空。

   return rev[0].amount;

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

if (rev && rev[0]) {
  return rev[0].amount;
} else {
  return 0;
}
相关问题