【发布时间】:2020-02-07 20:25:38
【问题描述】:
我正在尝试在 mongoDB 上进行简单的 SUM 以计算单个客户端的价格数量。
我的收藏:
{"_id":"5d973c71dd93adfbda4c7272","name":"Faktura2019006","clientId":"5d9c87a6b9676069c8b5e15b","expiration":"2019-10-02T01:11:18.965Z","price":999999,"userId":"123"},
{"_id":"5d9e07e0b9676069c8b5e15d","name":"Faktura2019007","clientId":"5d9c87a6b9676069c8b5e15b","expiration":"2019-10-02T01:11:18.965Z","price":888,"userId":"123"}
我尝试了什么:
// invoice.model.js
const mongoose = require("mongoose");
const InvoiceSchema = mongoose.Schema({
_id: String,
name: String,
client: String,
userId: String,
expiration: Date,
price: Number
});
module.exports = mongoose.model("Invoice", InvoiceSchema, "invoice");
和
// invoice.controller.js
const Invoice = require("../models/invoice.model.js");
exports.income = (req, res) => {
console.log("Counting Income");
Invoice.aggregate([
{
$match: {
userId: "123"
}
},
{
$group: {
total: { $sum: ["$price"] }
}
}
]);
};
会发生什么:
当我现在打开浏览器并调用上面的代码时,我会在终端中看到控制台日志“计算收入”,但在浏览器中它只是永远加载,没有任何反应。
很可能我只是错过了一些愚蠢的小事,但我试图找出它很长一段时间没有任何成功,所以欢迎任何建议。
【问题讨论】:
-
你没有从控制器返回任何东西(从控制器发送 res),这就是为什么 api 根本没有返回任何东西
-
这不是关于不返回,而是继续加载:) 所以我的问题不是我没有得到响应,问题是获取永远不会结束
-
将组更改为 {$group:{_id:null,total:{$sum:"$price"}}} 然后尝试
-
@sushantmehta 没有任何改变
标签: node.js mongodb express mongoose nosql