Search code examples
node.jsexpressnode-mongodb-native

How to query mongodb from a search form using node and express


I want to make an HTML form to query MongoDB. How can I write the logic to ignore blank fields? For example, I have two search parameters. If the lastname field is blank, how would I write the query to ignore that field?

router.post('/auth/search', auth, function(req,res){
    var db = req.db;
    console.log(req.body);
    db.users.find({ 'firstname': req.body.firstname,
                    'lastname' :req.body.lastname  // if this field is blank in the form how can I ignore it?

    }, function(err, docs){
        if (err) return err;
        console.log(docs);
        res.send(docs);
    });
});

Appreciate any help. Thanks!


Solution

  • You can add properties to your query only if they’re truthy:

    var query = {};
    
    if (req.body.firstname) {
        query.firstname = req.body.firstname;
    }
    
    if (req.body.lastname) {
        query.lastname = req.body.lastname;
    }
    
    db.users.find(query, function (err, docs) {
        // …
    });