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

如果你正在使用水线(应该是这样的情况下,如果你正在创build一个帆应用程序)只是做:

 Model.find().where({ attr : [your array] }).exec(your callback);