【发布时间】:2019-04-29 14:17:21
【问题描述】:
我正在使用 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 .. 存在时,它不会返回任何内容。
什么是错误?
【问题讨论】:
-
您能否更新您的问题以显示您的模型的架构以及您希望查询返回的示例文档?
-
@JohnnyHK,我检查了更长的代码,发现问题出在我与 Mongoose 一起使用的插件上,即 mongoose-paginate。我在没有这个插件的情况下测试了查询,它运行良好。感谢您显示更多代码的提示,因为我看到我没有使用纯猫鼬。
标签: javascript node.js mongodb mongoose