mongodb - MongoDB + Mongoose 聚合 w/ Asnyc
问题描述
我的 express 文件中有以下路由,它接受从中间件函数传入的参数并查询我的后端 MongoDB 数据库。但由于某种原因,它只返回一个空数组。
我想将允许我使用聚合函数的 Mongoose 模型转换为 async/await 以符合我的其余代码。它在线here
。
module.exports = {
search: asyncWrapper(async(req, res, next) => { // Retrieve and return documents from the database.
const {
filterTarget,
filter,
source,
minDate,
maxDate,
skip,
limit,
sortBy,
sortOrder
} = req.search;
try {
const mongoData = await Model.aggregate([
{
$match: {
date: {
$gt: minDate, // Filter out by time frame...
$lt: maxDate
}
}
},
{
$match: {
[filterTarget]: filter // Match search query....
}
},
{
$set: {
[filterTarget]: { $toLower: `$${filterTarget}` } // Necessary to ensure that sort works properly...
}
},
{
$sort: {
[sortBy]: sortOrder // Sort by date...
}
},
{
$group: {
_id: null,
data: { $push: "$$ROOT" }, // Push each document into the data array.
count: { $sum: 1 }
}
},
{
$project: {
_id: 0,
count: 1,
data: {
$slice: ["$data", skip, limit]
},
}
}
])
return res.status(200).json({ data: mongoData.data || [], count: mongoData.count || 0 });
} catch (err) {
next(err);
}
})
};
出于某种原因,路由每次只返回一个空数组。我已经两次和三次检查了我的变量,它们不是问题。
如何在异步等待路由中使用 Mongoose.aggregate() 函数?
解决方案
推荐阅读
- javascript - 另一个 $_POST 没有从 Javascript 的 Fetch() 中检索数据(但 ajax 确实...)(已解决)
- c - C) scanf+else+goto
- python - 如何在时间序列数据中找到最大增长率?
- qt - QML FontLoader.name 混淆
- c++ - 文件结束命令似乎没有做任何事情?
- typescript - 如果我有成功
我可以创建类型小于吗 ? - javascript - 使用 useState() 为 Nav 中的活动链接共享组件状态
- dataframe - 在“DataFrame API”中,如何显示所有行?
- c++ - 从lua中的c ++ lua参考索引获取表
- c# - 使用 C# 以十六进制格式表示负数