2016-07-28 47 views
0

我在使用node-postgres在node.js中構建應用程序。我不知道如何一次更新一個以上的記錄。
這裏是我的代碼:node-postgres:立刻更新一條以上的記錄

var status = 20; 
var id = [23,12,43]; 

pool.connect(function(err, client, done) 

{ 


if(err) 
{ 
     done(); 
     console.log(err); 
     return res.status(500).send(json({ success: false, data: err})); 
} 
    client.query("UPDATE myDatabase SET status=($1) WHERE id IN($2);", [status,id]); 

但我有一個問題 - 控制檯:

events.js:160 throw er; // Unhandled 'error' event ^

error: invalid input syntax for integer: "23,12,43"

我能在這種情況下怎麼辦?什麼樣的數據使用?每次var id的長度都不一樣。

問候,拉法爾
編輯:我認爲,數據的變化將在JavaScript中工作,輸入必須是23,12,43,反而是[23,12,43],但我不知道如何做到這一點。

+1

您在使用'node-postgres'直接或通過[pg-promise](https://github.com/vitaly-t/pg-promise)? –

+0

我剛剛看到pg-promise,它看起來不錯,我會用'pg-promise'確定地嘗試 – Rafalsonn

+0

,你可以在你的查詢中格式化id -s,像這樣:'WHERE id = ANY($ 2:csv)'。 –

回答

1

它看起來像你想使用ANY

client.query("UPDATE myDatabase SET status=($1) WHERE id = ANY($2);", [status,id]); 

這是由於PostgreSQL的本身,而不是庫:thisthis

另見這個問題:Oracle: '= ANY()' vs. 'IN()'

相關問題