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