mongoose find 可选查询
发布于 7 年前 作者 cllgeek 4203 次浏览 来自 问答
Library.find({category:category,subCategory:subCategory},(err,library)=>{
      if(err){
        console.log(err);
      }
      res.json({library})
    })********

上面 的代码 如果我想 subCategory 前端没传我就不查询这个字段,传了就查询 怎么写呢 ,谢谢各位了 我想到的是之前在外面加一层判断

if(subCategory){
  ....
}else{
  ...
}

但这样有点别扭啊

12 回复

没人来解答 ^_^

@xiaoyu311 求解答啊

var where={category:“abc”},subCategory=“343”; console.dir((subCategory&&(where[“subCategory”]=“abc”),where));

三元运算符即可

@Torres5000 怎么正则

试试query.method?

在schema里扩展

LibrarySchema.query.andCategory = function (category) {
  if (category) return this.where({ category });
  return this;
}
LibrarySchema.query.andSubCategory = function (subCategory) {
  if (subCategory) return this.where( { subCategory } );
  return this;
}
Library.find().andCategory(category).andSubCategory(subCategory).then(result => {
   // handle record
});
回到顶部