2015-06-19 27 views
0

這其實工作原理:db.raw在knex多個paremter與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']) 

我該如何做到這一點?

回答

1

看起來顯而易見的快速解決方案是簡單地重複您的數組元素。

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

我不知道knex,但這個解決方案也沒有錯。

編輯

一種不同的方法是通過像獼猴桃庫使用簡單的字符串插值:

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

+0

它實際上工作,但我想使用一些參數兩次 – lante

+0

有可能knex不會這樣工作。如果重複您的參數不起作用,您可能需要使用不同的knex方法。我只是看了文檔,但沒有看到他們做這樣的事情: 'select * from user where id = 1?和name = 2?和firstName = 3?' 相反,他們只是: 'select * from user where id =?和name =?和firstName =?' 因此,這可能是不可能的。 –

0

你可以做這樣的事情也:

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

這不是第一個例子,但它的記錄是here