我正在尝试实现一个基本的排序函数来查询我的mongoDB数据库,但是我遇到了麻烦。
exports.getAllFamilyPlots = async (req, res) => {
try {
//BUILD QUERY
const queryObj = { ...req.query };
const excludedFields = ['page', 'sort', 'limit', 'fields'];
excludedFields.forEach((el) => delete queryObj[el]);
let queryStr = JSON.stringify(queryObj);
queryStr = queryStr.replace(/\b(gte|gt|lte|lt)\b/g, (match) => `$${match}`);
let query = await Plot.find(JSON.parse(queryStr));
//SORTING
if (req.query.sort) {
query = query.sort(req.query.sort);
}
//EXECUTE QUERY
const plots = await query;
res.status(200).json({
status: 'success',
results: plots.length,
data: {
plots,
},
});
} catch (err) {
res.status(404).json({
status: 'fail',
message: err,
});
}
};
我试着把查询放到postman中,把“?sort=size”放在我的路径的末尾,我得到了以下结果:
{
"status": "fail",
"message": {}
}
把“req.query.sort”记录到控制台会得到“size”,就像我在postman中输入的一样。2记录“query”会得到我数据库中的4个对象,但是在排序行之后记录它绝对不会得到任何结果。3即使我尝试用query.sort(size);
硬编码它,它仍然不会向控制台记录任何结果。4我是不是用错了mongoose中的.sort函数,或者发生了什么事?
3条答案
按热度按时间yyyllmsg1#
通过删除此行中的“等待”进行修复;
在我上面发布的代码的第11行。
vdgimpew2#
我也面临着同样的问题,而使项目,但我已经解决了它。按照所有的步骤仔细。
1.从此行代码中删除“await”。
1.确保在重新分配查询变量的值时未使用const。
1.使用此代码
ncgqoxb03#