db.raw 多于一个参数与 knex

db.raw with more than one paremter with knex

这在 knex 中确实有效:

knex.raw('select * from users where id = ?', [1])

我正在尝试使用多个值作为参数,重复其中一些。像这样:

knex.raw('select * from users where id = 1? and name = 2? and firstName = 2?', [1, 'someName'])

我怎样才能做到这一点?

看起来显而易见的快速解决方案是简单地重复您的数组元素。

knex.raw('select * from users where id = 1? and name = 2? and firstName = 3?', [1, 'someName', 1])

我不知道knex,但这个解决方案也没有错。

编辑

另一种方法是通过类似 kiwi 的库使用简单的字符串插值:

var interpolateObject = {
  id: 'some_id',
  name: 'some_name',
  firstName: 'some_first_name'
};

var query = Kiwi.compose(
   "select * from users where id = %{id} and name = %{name} and firstName = %{firstName}",
    interpolateObject
    );

knex.raw(query);

结帐kiwi.js

你也可以这样做:

var params = {x1:1,dude:10};
return knex.raw("select * from foo where x1 = :x1 and dude = :dude",params);

这不是第一个示例,但已记录在案 here