В моем экспресс-файле есть следующий маршрут, который берет параметры, переданные из функции промежуточного программного обеспечения, и запрашивает базу данных моего внутреннего сервера 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 () в асинхронном маршруте ожидания?