使用一个数组在where子句与node-mysql



我想做一个像这样的查询:

"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);

相关内容

  • 没有找到相关文章

最新更新