【问题标题】:SELECT specific fields inside the MySQL JSON Column datatype using bookshelf or Knex ORM使用 bookshelf 或 Knex ORM 选择 MySQL JSON Column 数据类型中的特定字段
【发布时间】:2019-06-06 12:19:03
【问题描述】:

假设我有以下 MySQL 表结构:

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

| 1 |黎明 | {“州”:“马里兰”,“城市”:“安纳波利斯”} |

| 2 |巴勃罗| {“州”:“俄亥俄”,“城市”:“哥伦布”} |

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

选择名称,地址->“$.state” 来自用户

选择名称,json_extract(地址,“$.state”) 来自用户

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

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

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

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

PS:这只是一个例子

【问题讨论】:

  • @andrewmclagan 你在这里可能会有所帮助!!

标签: mysql node.js orm knex.js bookshelf.js


【解决方案1】:

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

// 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']))

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-12-29
    • 1970-01-01
    • 2016-08-02
    • 1970-01-01
    • 2023-03-28
    • 2016-06-25
    • 2015-04-28
    相关资源
    最近更新 更多