Я пытаюсь обновить столбец текстового массива:
var data = [];
for (const tag of tags) {
var tmp = {'rids': [rid], 'id': tag.id, 'uid' : uid};
data.push(tmp);
}
const condition = pgp.as.format(' WHERE CAST(v.uid AS INTEGER) = t.uid and v.id = t.id');
const insertQuery = pgp.helpers.update(data, ['?id', '?uid', 'rids'], 'table_tags') + condition + ' ' + 'RETURNING t.tag';
return db.any(insertQuery);
Это работает, но заменяет значение столбцов.
Как сохранить текущее значение столбца и добавить новые?
Как это: {somevalue, someothervalue, newinsertedvalue}
Вместо: {newinsertedvalue}
Это запрос, который я использовал в проекте php drupal:
db_query("UPDATE table_tags set rids = rids || (:rid) WHERE uid = :uid and id = :id", array(':rid' => '{'.$rid.'}', ':uid' => $uid, ':id' => $tag_id));
pg-promise
. Без него это даже не связано сpg-promise
, а скорее с желаемым запросом и ожидаемым результатом. - person vitaly-t   schedule 28.02.2020update "table_tags" as t set "rids"= t.rids || v."rids" from (values(154,1,1315709),(153, 1,1315709)) as v("id","uid", "rids") WHERE CAST(v.uid AS INTEGER) = t.uid and v.id = t.id RETURNING t.tag
Не уверен, что pgp.helpers может обрабатывать concat - person MrJibus   schedule 02.03.2020update
. Он устанавливает значения, а не связывает их с такой дополнительной логикой. Вам нужно будет предоставить собственный генератор обновлений. - person vitaly-t   schedule 02.03.2020