Mongoose optional search query parameters?

匿名 (未验证) 提交于 2019-12-03 01:39:01

问题:

I have a following situation. I need to build a mongoose query, based on certain arguments if present.

I.e. if object like this is passed

{     player: "nickname",     action: "capture" } 

the following search is performed:

Entry.find({     player: obj.player,     action: obj.action }).     exec(function(err, res){         console.log(res);     }); 

If I need to exclude "action" from search if action is not in the object, what should I do? Using ternary operator like action: (obj.action) ? obj.action:null doesn't work, as would search entries in DB where action is null.

回答1:

Build up your query object programmatically:

var query = {     player: 'player' };  if (obj.action) {     query.action = obj.action; }  Entry.find(query).exec(function(err, res){     console.log(res); }); 


回答2:

In case someone encounters same question, here's how I solved it:

var query = {     player: 'player' };  Entry.find({     player: query.player,     action: (query.action) ? query.action:/.*/ }).     exec(function(err, res){         console.log(res);     }); 


标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!