2016-07-28 6 views
0

Ich baue eine App in node.js mit node-postgres. Ich weiß nicht, wie ich mehr als einen Datensatz gleichzeitig aktualisieren kann.
Hier ist mein Code:node-postgres: Mehrere Datensätze gleichzeitig aktualisieren

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

Aber ich habe ein Problem - Konsole:

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

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

Was kann ich in diesem Fall tun? Welche Art von Daten verwenden? Die Länge von var id wird nicht jedes Mal gleich sein.

Grüße, Rafał
EDIT: Ich denke, dass eine Änderung der Daten in JavaScript funktionieren wird, muss der Eingang 23,12,43, sein, sondern ist [23,12,43], aber ich weiß nicht, wie man das macht.

+1

Sie verwenden 'node-postgres' direkt oder über [pg-promise] (https://github.com/vitaly-t/pg- promise)? –

+0

Ich habe gerade gesehen, pg-Versprechen und es sieht gut aus, werde ich definitiv versuchen, dass – Rafalsonn

+0

mit 'pg-Versprechen' können Sie ID-s in Ihrer Abfrage wie folgt formatieren: 'WHERE id = ANY ($ 2: csv)'. –

Antwort

1

Es sieht aus wie Sie ANY verwenden möchten:

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

Dies aufgrund Postgresql selbst, nicht die Bibliothek: siehe this und this

Siehe auch diese Frage: Oracle: '= ANY()' vs. 'IN()'