Welcome to OStack Knowledge Sharing Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
943 views
in Technique[技术] by (71.8m points)

node.js - Mongoose optional search query parameters?

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.

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Answer

0 votes
by (71.8m points)

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);
});

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome to OStack Knowledge Sharing Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

2.1m questions

2.1m answers

60 comments

56.9k users

...