0

我想在查询模型时在 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
});
4

2 回答 2

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)
     })

}

于 2015-04-15T11:55:33.420 回答
0

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

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

User.find()
    .where(whereParams)
    .limit(100)
    .sort('name')
    .exec(function(err, users) {
        // Do stuff here.
    });
于 2013-08-29T07:55:41.820 回答