You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Node-Postgres中如何使用参数向嵌套jsonb对象新增或更新字段?

问题根因

你将参数占位符$1写在了字符串字面量'{variable, $1}'内部,PostgreSQL不会解析字符串内的参数占位符,只会将其当做普通文本处理,导致jsonb_set的路径参数不符合预期。

解决方案

jsonb_set的第二个参数本质是text[]类型的路径数组,改用ARRAY语法构造动态路径即可正常传入动态变量名。

修正后代码

你只需要修改SQL定义行即可:

// 原来的冗余拼接context || 也可以删掉,jsonb_set已返回完整修改后的jsonb对象
let sql = "UPDATE chatbots.A SET context = jsonb_set(context, ARRAY['variable', $1]::text[], to_jsonb($2::text)) WHERE chat_user_id IN ( "

说明

  • ARRAY['variable', $1]::text[]会把固定前缀variable和动态传入的变量名参数$1拼接为符合要求的路径数组,参数可以被node-postgres正常解析绑定。
  • 无需额外做context || jsonb_set(...)的合并操作,jsonb_set本身就会基于原context值修改指定路径后返回完整的新jsonb对象,直接赋值即可。

内容的提问来源于stack exchange,提问作者user13128795

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 10:45:02