错误:json postgreSQL NodeJS类型的输入语法无效
我犯了以下错误 错误:json类型的输入语法无效错误:json postgreSQL NodeJS类型的输入语法无效,json,postgresql,Json,Postgresql,我犯了以下错误 错误:json类型的输入语法无效 我不知道我做错了什么。我认为smt与插入值有关。谢谢您的帮助。您缺少JSON字符串周围的引号。这应该起作用: 等待this.db.query( `更新来宾组 设置自定义_字段=jsonb_insert(自定义_字段,{0},{“值”:$3,“显示_名称”:“跟踪”,“服务_标记”:[“跟踪”]}]::jsonb,true) 其中“{”value:$1}”服务标签“=”[“全名”]::jsonb) 和“{”value:$2}”服务标签“=”[“房间
我不知道我做错了什么。我认为smt与插入值有关。谢谢您的帮助。您缺少JSON字符串周围的引号。这应该起作用:
等待this.db.query(
`更新来宾组
设置自定义_字段=jsonb_insert(自定义_字段,{0},{“值”:$3,“显示_名称”:“跟踪”,“服务_标记”:[“跟踪”]}]::jsonb,true)
其中“{”value:$1}”服务标签“=”[“全名”]::jsonb)
和“{”value:$2}”服务标签“=”[“房间号”]::jsonb)`[
JSON.stringify(trace.guestName),
JSON.stringify(trace.guestRoomNumber),
stringify(trace.value)
]);
但是,我宁愿将整个JSON(B)值传递给查询,并让node pg进行转义:
await this.db.query(
`UPDATE guest_group
SET custom_fields = jsonb_insert(custom_fields, '{0}', $3::jsonb, true)
WHERE $1 <@ ANY(
SELECT el
FROM jsonb_array_elements(custom_fields) AS el
WHERE el->'servicio_tags' = '["full-name"]'::jsonb)
AND $2 <@ ANY(
SELECT el
FROM jsonb_array_elements(custom_fields) AS el
WHERE el->'servicio_tags' = '["room-number"]'::jsonb)`,[
{"value": trace.guestName },
{"value": trace.guestRoomNumber },
{"value": trace.value, "display_name": "Traces", "servicio_tags": ["trace"]}
]);
AppTrace {
value:'test',
guestName: 'Bortolotti, Ingrid',
guestRoomNumber: '422',
}
await this.db.query(
`UPDATE guest_group
SET custom_fields = jsonb_insert(custom_fields, '{0}', $3::jsonb, true)
WHERE $1 <@ ANY(
SELECT el
FROM jsonb_array_elements(custom_fields) AS el
WHERE el->'servicio_tags' = '["full-name"]'::jsonb)
AND $2 <@ ANY(
SELECT el
FROM jsonb_array_elements(custom_fields) AS el
WHERE el->'servicio_tags' = '["room-number"]'::jsonb)`,[
{"value": trace.guestName },
{"value": trace.guestRoomNumber },
{"value": trace.value, "display_name": "Traces", "servicio_tags": ["trace"]}
]);
await this.db.query(
`UPDATE guest_group
SET custom_fields = jsonb_insert(custom_fields, '{0}', $3::jsonb, true)
WHERE EXISTS (
SELECT 1
FROM jsonb_array_elements(custom_fields) AS el
WHERE el->>'value' = $1
AND el->'servicio_tags' = '["full-name"]'::jsonb)
AND EXISTS (
SELECT 1
FROM jsonb_array_elements(custom_fields) AS el
WHERE el->>'value' = $2
AND el->'servicio_tags' = '["room-number"]'::jsonb)
`, [
trace.guestName,
trace.guestRoomNumber,
{"value": trace.value, "display_name": "Traces", "servicio_tags": ["trace"]}
]);