var query=`UPDATE "public"."vehicle_ads"
SET options=
jsonb_set(
options,
'{$1, ${subgroup}, -1}',
'{"name": "${optionName}"}'::jsonb
)
WHERE "vehicleId"=${id}`;
我在上述查询中遇到以下问题。如果我用$ {group}替换$ 1,则没有错误。但是,如果我留下1美元并将组作为准备好的声明传递,我会收到错误...
bind message supplies 1 parameters, but prepared statement "" requires 0
我的目标是将整个查询标记化,例如:
var query=`UPDATE "public"."vehicle_ads"
SET options=
jsonb_set(
options,
'{$1, $2, -1}',
'{"name": $3}'::jsonb
)
WHERE "vehicleId"=$4`;
则...
could not determine data type of parameter $1
我知道我迷失在模板字符串和Postgres的格式化汤中,不确定什么需要滴答,单引号或双精度。非常感谢任何帮助。
修改
这是我正在做的细节。
我有一个嵌套对象,车辆选项数据存储为jsonb字段。它的格式为:
{
"Group": {
"SubGroup": [
{
"name": string,
"hasOption": bool
}
...
]
...
}
...
}
我想在子组中编辑名称。例如Powertrain.Drivetrain [0] .name ='AWD';
答案 0 :(得分:0)
在使用 text
将变量转换为 jsonb 之前,您必须先将其转换为 to_jsonb
UPDATE table SET body = jsonb_set(options, '{key}', to_jsonb($1::text));