在后端使用NodeJS和Mongoose和MongoDB。
我正在尝试这样做(例如):
controller.getUsersSearchAll = function(req, res){
let last = req.query.last;
let min = req.query.minPrice;
let max = req.query.maxPrice;
if(last && min && max){
User.find()
.where('last_name').equals(last)
.where('age').gte(min).lte(max)
.exec(function(err, result){
res.json(result);
});
}else if(last){
User.find()
.where('last_name').equals(last)
.exec(function(err, result){
res.json(result);
});
}
};
它可以工作,但是以这种方式,它是静态的。问题是,当我有10个或更多条件时,我必须应用许多if条件。
如何将其转换为动态方式?有什么聪明的方法吗?
答案 0 :(得分:1)
为什么不将基本查询存储在var中然后添加到var中?
var query = User.find().where('last_name').equals(last)
// editing to show adding multiple where conditons
if(condition_1){
query = query.where('age').gte(10)
}
if (condition_2){
query = query.where('age').gte(50)
}
if (condition_3){
query = query.where('age').gte(100)
}//...etc for any other where clauses you need to add
//Then exec your query and do something with the data
query.exec(function(err, data){})