如何使用 knexjs、bookshelfjs 更新 JSONB 列
how to update JSONB column using knexjs, bookshelfjs
我在 PostgreSQL 数据库中有一个 JSONB 列,例如 {lat: value, lon: value}
。我想一次更改任何特定值,例如。纬度,但我不确定如何使用 bookshelf.js 或 knex.js 实现此目的。我尝试使用 Postgres 文档中指定的 jsonb_set()
方法,但我不确定我是否使用正确。有人可以建议我该怎么做吗?或者执行此操作的正确语法是什么?谢谢
AFAIK 唯一支持从 postgresql jsonb 列写入和提取数据的基于 knex 的东西是 objection.js ORM。
使用plain knex需要使用raw来写引用:
knex('table').update({
jsonbColumn: knex.raw(`jsonb_set(??, '{lat}', ?)`, ['jsonbColumn', newLatValue])
})
您可以在此处查看生成的 SQL https://runkit.com/embed/44ifdhzxejf1
最初回答于:https://github.com/tgriesser/knex/issues/2264
有关如何将 jsonb_set 与 knex 一起使用的更多示例,请参见以下答案
What is the best way to use PostgreSQL JSON types with NodeJS
Jsonb 字段更新使用 knex.js
return knex("tablename").update({
jsonbkey: knex.raw(`
jsonb_set(jsonbkey, '{city}','"Ayodhya"')
`)
}).where({"id" :2020})
jsonbkey
为列名,数据类型为 jsonb。
tablename
是您的 table 的名称。
city
是对象键。
如果有多层次的对象那么你可以使用点。喜欢'{city.id}'
我在 PostgreSQL 数据库中有一个 JSONB 列,例如 {lat: value, lon: value}
。我想一次更改任何特定值,例如。纬度,但我不确定如何使用 bookshelf.js 或 knex.js 实现此目的。我尝试使用 Postgres 文档中指定的 jsonb_set()
方法,但我不确定我是否使用正确。有人可以建议我该怎么做吗?或者执行此操作的正确语法是什么?谢谢
AFAIK 唯一支持从 postgresql jsonb 列写入和提取数据的基于 knex 的东西是 objection.js ORM。
使用plain knex需要使用raw来写引用:
knex('table').update({
jsonbColumn: knex.raw(`jsonb_set(??, '{lat}', ?)`, ['jsonbColumn', newLatValue])
})
您可以在此处查看生成的 SQL https://runkit.com/embed/44ifdhzxejf1
最初回答于:https://github.com/tgriesser/knex/issues/2264
有关如何将 jsonb_set 与 knex 一起使用的更多示例,请参见以下答案
What is the best way to use PostgreSQL JSON types with NodeJS
Jsonb 字段更新使用 knex.js
return knex("tablename").update({
jsonbkey: knex.raw(`
jsonb_set(jsonbkey, '{city}','"Ayodhya"')
`)
}).where({"id" :2020})
jsonbkey
为列名,数据类型为 jsonb。
tablename
是您的 table 的名称。
city
是对象键。
如果有多层次的对象那么你可以使用点。喜欢'{city.id}'