node.js和postgresql更新嵌套的JSON密钥

我在我的数据库中有一个名为“json”的表,有2列:“id”和“data”

目前只有一行存储在它里面,有1个id和一个JSON结构作为数据:

{ "elements": { "nodes": [ { "data": { "id": "n0", "name": "Name here", "color": "#FFFFFF" } }, { "bob": "hello" } ] } } 

我需要更新JSON的一个键:“名称在这里”必须成为“更新”

这是我试过的:

 db.query("UPDATE json SET $1 WHERE data->'elements'->'nodes'->0->'data'->'name'=$2", ['updated', 'Name here']) 

但我得到一个错误:

在“'更新'”处或附近的语法错误

当使用Postgres JSON导航器时,使用text检索导航器终止您的链是非常重要的->>如果您想进行比较:

 UPDATE json SET $1 WHERE data->'elements'->'nodes'->0->'data'->>'name'=$2 

这应该允许比较text而不是json text

我想你可能也可以用#>>来一口气挖掘整个过程:

 UPDATE json SET $1 WHERE data#>>'{elements,nodes,0,data,name}'=$2