如果值存在则应用过滤器,否则忽略 - mongoose

时间:2017-05-23 08:14:18

标签: javascript mongodb mongoose

我的收藏中有以下字段:

"intent" : [ 
  "Find a job",
  "Advertise a job"
],

我尝试做的事情基本上是在该字段上过滤结果。

因此,如果最终用户传入

[ 
  "Find a job",
]

然后我将返回所有具有意图Find a job的文档,这是我目前的查询:

var _intent = req.body.intent;

Reason.find({ intent: { $in: _intent }}, function (err, reason) {                 
  if (err) {
     res.send(err);
  }

   res.json(reason);

});

现在,当我使用intent - Logical Query Operator指定$in的值时,这是有效的,但是当我没有为intent指定值时它没有返回任何文件,所以我要问的是,如果intent有一个值然后对其进行过滤,我可以说,否则,如果它没有那么不适用过滤器?

1 个答案:

答案 0 :(得分:2)

为什么不动态设置查询对象?

var query = {};

if ( req.body.hasOwnProperty('intent') )
    query.intent = { "$in": req.body.intent };

Reason.find(query, function(err, reason) {

});

甚至

if ( req.body.intent.length > 0 )

哪种逻辑适合的情况。它毕竟只是JavaScript。