Sails.js:在查询模型时将查询列指定为where子句中的变量

时间:2013-08-29 07:09:23

标签: javascript node.js sails.js

我想在查询模型时动态指定where子句中的查询列,这可能吗?我尝试了几种不同的运气方式。如果我运行这样的东西,我会得到Logic db错误,因为它正在寻找一个名为dataTypeToQuery的列。

var dataTypeToQuery = 'age';
var dataToQuery = 21;

User.find()
.where({ dataTypeToQuery: dataToQuery })
.limit(100)
.sort('name')
.exec(function(err, users) {
  // Do stuff here
});

2 个答案:

答案 0 :(得分:0)

尝试在函数调用之外创建where参数对象,然后使用数组语法设置键和值。

var whereParams = {};
whereParams[dataTypeToQuery] = dataToQuery;

User.find()
    .where(whereParams)
    .limit(100)
    .sort('name')
    .exec(function(err, users) {
        // Do stuff here.
    });

答案 1 :(得分:0)

完美答案。它使我的工作更容易根据条件动态添加参数。您可以看到以下单个搜索多个参数:

fullCriteriaSearch:function (req, res) {
var city = req.param("city");
var zip = req.param("zip");
var name= req.param("name");
var page = req.param("page");
var perPage = 10;
var query={}
if(city!=undefined){
  query['locationCity'] = city;
}
if(zip!=undefined){
  query['locationZip'] = zip;
}
if(name!=undefined){
  query['name'] = name;
}
User.find({ where: query,skip:page*perPage,limit:perPage}).populateAll()
    .then(function (users) {
       return res.json(users)
     })

}