gpt4 book ai didi

node.js - pg-promise:使用 pgp.helpers.update 更新包含数组文本列的行

转载 作者:太空宇宙 更新时间:2023-11-03 23:47:43 28 4
gpt4 key购买 nike

我正在尝试更新文本数组列:

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

最佳答案

您的值串联逻辑是一种特殊情况,默认更新不支持。您必须使用通过 helpers.values 生成的动态部分 - 值静态编写查询。功能。


const values = helpers.values(data, ['id', 'uid', 'rids']);

const query = `UPDATE table_tags AS t SET rids = t.rids || v.rids FROM
(VALUES${values}) as v(id, uid, rids)
WHERE CAST(v.uid AS INTEGER) = t.uid AND v.id = t.id RETURNING t.tag`.

关于node.js - pg-promise:使用 pgp.helpers.update 更新包含数组文本列的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60457339/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com