繁体   English   中英

用$ in查找的猫鼬动态查询不起作用

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM