如何在 pg-promise 中使用 JSONB 操作
How to use JSONB operations with pg-promise
我正在为 pg-promise 和让它与 JSONB 一起工作而苦苦挣扎。我正在使用准备好的语句,我已经为这个 SQL 命令尝试了两种变体(我只是想用一组新的值更新 jsonb 列,基本上是附加):
db.none({
name: 'updateLike',
text:`UPDATE posts
SET likes_by = jsonb_set(likes_by, '{~}', '~'),
likes_count = likes_count + 1
WHERE post_id = `,
values: [user_id, username, pid]
})
或
db.none({
name: 'updateLike',
text:`UPDATE posts
SET likes_by = likes_by || '{"": ""}',
likes_count = likes_count + 1
WHERE post_id = `,
values: [user_id, username, pid]
})
它给我这样的错误:
错误:类型 json
的输入语法无效
或
错误:无法确定参数 $1
的数据类型
以前有人做过吗?
这就是我最后做的事情:
db.none(`UPDATE posts
SET likes_by = likes_by || '{~: ~}',
likes_count = likes_count + 1
WHERE post_id = #`,
[user_id, username, pid]
)
有效。谢谢!
我正在为 pg-promise 和让它与 JSONB 一起工作而苦苦挣扎。我正在使用准备好的语句,我已经为这个 SQL 命令尝试了两种变体(我只是想用一组新的值更新 jsonb 列,基本上是附加):
db.none({
name: 'updateLike',
text:`UPDATE posts
SET likes_by = jsonb_set(likes_by, '{~}', '~'),
likes_count = likes_count + 1
WHERE post_id = `,
values: [user_id, username, pid]
})
或
db.none({
name: 'updateLike',
text:`UPDATE posts
SET likes_by = likes_by || '{"": ""}',
likes_count = likes_count + 1
WHERE post_id = `,
values: [user_id, username, pid]
})
它给我这样的错误:
错误:类型 json
的输入语法无效或
错误:无法确定参数 $1
的数据类型以前有人做过吗?
这就是我最后做的事情:
db.none(`UPDATE posts
SET likes_by = likes_by || '{~: ~}',
likes_count = likes_count + 1
WHERE post_id = #`,
[user_id, username, pid]
)
有效。谢谢!