我想做一个像这样的查询:
"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',..."
简单查询
正如@Raphael提到的,对于简单的查询,您可以使用Model.find()
,相关文档部分。
使用join的查询
对于涉及连接的查询,可以使用find.populate()
, docs进行填充。例子:
Model.find().where({
attr : [your array]
}).populate('association').exec(your callback);
非常复杂的查询
对于更复杂的查询,甚至不填充是足够的,你确实可以使用.query()
(文档),但我认为你可能已经得到了语法错误。第二个参数是一个数组。例子:
var title = "The King's Speech";
Movie.query('SELECT * FROM movie WHERE title = $1', [title], function(err, results) {})
如果你正在使用Waterline(如果你正在创建一个sails应用程序,应该是这种情况),只需:
Model.find().where({
attr : [your array]
}).exec(your callback);