2016-07-28 4 views
0

Я создаю приложение в node.js, используя node-postgres. Я не знаю, как обновлять сразу несколько записей.
Вот мой код: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 будет не одинаковой каждый раз.

Привет, Рафал
EDIT: Я думаю, что изменение данных будет работать в JavaScript, вход должен быть 23,12,43, но вместо этого [23,12,43], но я не знаю, как это сделать.

+1

вы используете 'node-postgres' напрямую или через [pg-prom] (https://github.com/vitaly-t/pg-promise)? –

+0

Я только что видел pg-обещание, и это выглядит красиво, я определенно попробую – Rafalsonn

+0

с 'pg-prom', вы можете форматировать id-s в своем запросе следующим образом:' WHERE id = ANY ($ 2: csv) '. –

ответ

1

Похоже, что вы хотите использовать ANY:

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

Это само по себе из-за Postgresql, а не библиотека: см this и this

Смотрите также похожие на этот вопрос: Oracle: '= ANY()' vs. 'IN()'

Смежные вопросы