SELECT MySQL JSON 列数据类型中的特定字段使用书架或 Knex ORM

SELECT specific fields inside the MySQL JSON Column datatype using bookshelf or Knex ORM

假设我有以下 MySQL table 结构:

============================================= ============= |编号 |姓名 |地址 | ++++++++++++++++++++++++++++++++++++++++++++++++++++ ++++++++

| 1 |黎明 | {"state": "Maryland", "city": "Annapolis"} |

| 2 |巴勃罗| {"state": "Ohio", "city": "Columbus"} |

地址栏是json类型。我在我的应用程序中使用书架和 knex ORM,我需要进行查询,以便它可以获取不带城市的名称和州名。 我的普通 SQL 查询将如下所示:

select姓名、地址->"$.state" 来自用户

select 姓名, json_extract(地址, "$.state") 来自用户

但是当我使用 Bookshelf 时: user.select('name', 'address->"$.state"').fetch().then(....)

由于引号和反引号格式,我在 SQL 命令中收到无效错误。 使用书架生成的SQL如下:

select 'address->\" '.'state\" ', 'name' from `user.

有什么建议可以避免点 (.) 字符周围的反引号问题吗??或者其他一些方法??

PS: 这只是一个例子

您可以像这样生成这些查询:

// select name, address->"$.state" from user
knex('user').select('name', knex.raw('??->"$.state"', ['address']))

// select name, json_extract(address, "$.state") from user
knex('user').select('name', knex.raw('json_extract(??, "$.state")', ['address']))