[英]Mongoose dynamic query in find with $in is not working
我正在使用Node.js和Mongoose 5+在数据库中动态构建查询。 变量filterField
是字段名, filterValues
是一个数组。 所以,我的代码是这样的:
if (req.currentUser.activePage) {
queryParam['pageId'] = req.currentUser.activePage;
if (filterField && filterValues)
queryParam[filterField] = { $in: filterValues };
query = Model.find(queryParam);
console.info(queryParam);
}
Model.paginate(query, options, async (err, result) => {
if (err) {
res.status(500).json({ message: err.errmsg });
} else {
res.status(200).json(result.docs);
}
});
打印的queryParam
如下:
{ pageId: '123', id: { '$in': [ 1, 2 ] } }
如果我直接在Mongo Shell中运行此查询,则效果很好。
但是,当我在Mongoose中运行此查询时,如果存在id: {$in ..
,它不会返回任何内容。
有什么错误?
您已将错误的参数查询传递给Model.paginate()
方法,请尝试以下方式:
if (req.currentUser.activePage) {
queryParam['pageId'] = req.currentUser.activePage;
if (filterField && filterValues){
queryParam[filterField] = { '$in': filterValues };
}
Model.paginate(queryParam, options, async (err, result) => {
if (err) {
res.status(500).json({ message: err.errmsg });
} else {
res.status(200).json(result.docs);
}
});
}
我发现了错误,这是由mongoose-paginate插件引起的。 因此,如果您将此插件与Mongoose一起使用,请谨慎使用传递给查询的参数。
就我而言,使用$in
选项将数组作为过滤器传递对mongoose-paginate
无效。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.