これは実際に 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 で機能します。
knex.raw('select * from users where id = ?', [1])
複数の値をパラメーターとして使用しようとしていますが、それらのいくつかを繰り返しています。このようなもの:
knex.raw('select * from users where id = 1? and name = 2? and firstName = 2?', [1, 'someName'])
どうすればそれを達成できますか?
このようなこともできます:
var params = {x1:1,dude:10};
return knex.raw("select * from foo where x1 = :x1 and dude = :dude",params);
これは最初の例ではありませんが、ここに文書化されています。
明らかに簡単な解決策は、配列要素を単純に繰り返すことです。
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