javascript - 使用 $in 查找的 Mongoose 动态查询不起作用
问题描述
我正在使用 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);
}
});
}
推荐阅读
- javascript - Vue:无法将值从父组件传递给子组件
- c# - 创建 SSL 连接时的 .NET Core 3.1 Alpine 图像竞争条件
- kubernetes-helm - 具有多个部署的 helm install 图表 - 并行
- angular - Angular9 - 以模态形式打开反应形式的一部分
- mediawiki - 如何通过 MediaWiki API 获取维基百科所有内容页面的 Pageids 和 Title?
- javascript - 引号中的 Javastript 语法
- android - Flutter - 如何在 Listview 构建器顶部添加项目?
- python-3.x - 我想在代码运行时计算时间,5秒后我想打印循环中的数字,但为什么我的代码不适用于 time.time()?
- javascript - ajax面临的问题
- django - 有没有办法在 Django 模型中自动生成对象?