我想做一个看起来像这样的查询:
"Select * FROM ... WHERE name in ?" which would be equal to
"Select * FROM ... WHERE name in 'joe','william', ..."
有没有办法做那样的事情?
Model.query(query, array, function(err, result) {...});
我尝试了以下内容:
string = array.join("','")
Model.query(query, string, function(err, result) {...});
但接下来是我的结果(由于单引号而出现反斜杠):
Select * FROM ... WHERE name in \'joe\',\'william\',..."
答案 0 :(得分:2)
正如@Raphael所提到的,对于简单查询,您可以使用Model.find()
,relevant docs section。
对于涉及联接的查询,您可以使用find.populate()
,docs for populate。例如:
Model.find().where({
attr : [your array]
}).populate('association').exec(your callback);
对于更复杂的查询,甚至连填充都不够,你确实可以使用.query()
(documentation),但我认为你的语法可能有问题。第二个参数是一个数组。例如:
var title = "The King's Speech";
Movie.query('SELECT * FROM movie WHERE title = $1', [title], function(err, results) {})
答案 1 :(得分:1)
如果您正在使用Waterline(如果您正在创建风帆应用程序,则应该是这种情况),只需执行以下操作:
Model.find().where({
attr : [your array]
}).exec(your callback);