使用bookshelf或Knex ORM在MySQL JSON列数据类型中选择特定字段
假设我有以下MySQL表结构: ========================================================== |id |姓名|地址| ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |1 | Dawn |{“州”:“马里兰州”,“市”:“安纳波利斯”}| |2 | Pablo |{“州”:“俄亥俄州”,“市”:“哥伦布”}| 地址列是json类型的。我在我的应用程序中使用了书架和knex ORM,我需要进行查询,以便它将获取名称和州名称,而不包含城市。 我的普通SQL查询如下所示:使用bookshelf或Knex ORM在MySQL JSON列数据类型中选择特定字段,mysql,node.js,orm,knex.js,bookshelf.js,Mysql,Node.js,Orm,Knex.js,Bookshelf.js,假设我有以下MySQL表结构: ========================================================== |id |姓名|地址| ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |1 | Dawn |{“州”:“马里兰州”,“市”:“安纳波利斯”}| |2 | Pablo |{“州”:“俄亥俄州”,“市”:“哥伦布”}| 地址列是json类型的。我在我的应用程序中使用了书架和knex
// 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']))
选择名称、地址->“$.state”
来自用户
或
选择名称,json_extract(地址,“$.state”)
来自用户
但当我使用书架时:
user.select('name','address->“$.state”')。fetch()。然后(…)
由于quote和backtick格式,SQL命令中出现无效错误。
使用bookshelf生成的SQL如下:
从“用户”中选择“地址->\”。“状态\”,“名称”
有没有关于避免圆点(.)字符周围的反勾号问题的建议??或者其他方法
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']))
@andrewmclagan你在这里可能会有所帮助!!