如何通过在nodejs中对多个字段使用搜索操作,使用mongoose获取与mongodb中的字段匹配的所有文档

vsdwdz23  于 2022-12-18  发布在  Go
关注(0)|答案(1)|浏览(112)

'

const getCandidates = (req,res,next) => {
    console.log(req.params);
    
    Candidate.find({
       $or:[
        {"name":req.params.name},
        {"email":req.params.email},
        {"role":req.params.role},
        {"status":req.params.status}
       ]}
      ,
      function(err, result) {
        if(err) { console.log(err);
                  throw err;
        }
        res.json(result);
      });
}

'
我想所有的文件,其中匹配的领域,用户可能会或可能不会给予所有领域的搜索和检索。

qv7cva1a

qv7cva1a1#

我认为出现此问题是因为您使用的是$or,这使它成为一个过滤器,例如,name具有一个值,但随后它在email字段上执行“或”操作,如果为空,则返回所有文档,我认为您需要一些逻辑来检查是否有值,如果为空,则不返回它,我认为对于您的用例,您不需要$or,我在我的应用程序中这样做:

const query = Object.entries(req.params.reduce((acc, [key, value]) => {
    if (value !== "") {
        return { ...acc, [key]: value };
    }
    return acc
, {});

const result = await Candidate.find(query);

res.json(result);

相关问题