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.
With ES6, you can do this with a splat & ternary like this:
Entry.find({
  player: obj.player,
  ...obj.action ? { action: obj.action } : {}
})
.exec(function(err, res){
    console.log(res);
});
                        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);
});
                        If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With