Mongoose / MongoDB动态取决于URL参数

时间:2018-11-25 13:01:56

标签: node.js mongodb mongoose

在后端使用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条件。

如何将其转换为动态方式?有什么聪明的方法吗?

1 个答案:

答案 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){})