Node.js 更新多个jsonb值

Node.js 更新多个jsonb值,node.js,postgresql,Node.js,Postgresql,我试图创建一个cron,每月运行一次,以更新带有postgres数据库的ndoe应用程序中jsonb字段的一些键 在我的数据库中,我有一个jsonb字段,其中包含诸如“disk\u alert”、“temepratures\u alert”、“consumptions\u alert”之类的键,我想这样做 博士后: UPDATE devices SET data=jsonb_set(data::jsonb,'{disk_alert}','false'::jsonb,true),

我试图创建一个cron,每月运行一次,以更新带有postgres数据库的ndoe应用程序中jsonb字段的一些键

在我的数据库中,我有一个jsonb字段,其中包含诸如“disk\u alert”、“temepratures\u alert”、“consumptions\u alert”之类的键,我想这样做

博士后:

UPDATE devices SET    
    data=jsonb_set(data::jsonb,'{disk_alert}','false'::jsonb,true), 
    modified_date=NOW() 
WHERE id=$1 AND NOT deleted;
节点:


但是如何添加其他键“消耗警报”和“温度警报”??我读到了一些关于使用cocnatenation | |运算符的内容,但是如何使用呢?

您可以这样使用concatenation运算符:


可以按如下方式使用串联运算符:


这会引发错误“{error:column“data”的类型是json,但表达式的类型是text“我正在尝试更新设备SET data=data |{'disk_alert':false,'temperatures_alert':false,'ram_alert':false,'cpu_alert':false}”,modified_date NOW()如果列
data
为json类型,则将其转换为jsonb,如更新后的答案中所示。这会引发错误“{error:column“data”为json类型,但表达式为text类型“我正在尝试更新设备SET data=data ||”{'disk_alert':false,'temperatures_alert':false,'ram_alert':false,'cpu_alert':false}',modified_date=NOW(),其中id=$1且不删除如果列
data
为json类型,则将其强制转换为jsonb,如更新的答案中所示。
client.query("UPDATE devices SET data=jsonb_set(data::jsonb,'{disk_alert}','false'::jsonb,true), modified_date=NOW() WHERE id=$1 AND NOT deleted", [deviceId]
UPDATE devices SET 
    data = data::jsonb || '{"disk_alert": false, "temepratures_alert": false}',
    modified_date = NOW() 
WHERE id=$1 AND NOT deleted;