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!
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) {
// …
});
By making search object dynamically.
router.post('/auth/search', auth, function(req,res){
var db = req.db;
console.log(req.body);
var obj = {}
if(req.body.firstname) {
obj['firstname'] = req.body.firstname;
}
if(req.body.lastname) {
obj['lastname'] = req.body.lastname;
}
db.users.find(obj, function(err, docs){
if (err) return err;
console.log(docs);
res.send(docs);
});
});
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.