使用bookshelf.js查询PostgreSQL数据库中的JSON列

时间:2018-10-19 20:26:58

标签: postgresql knex.js bookshelf.js

我的Postgres dB表的@Execute public void execute(@Named(IServiceConstants.ACTIVE_PART) MPart mpart) { PartStackOverflow part = (PartStackOverflow)mpart.getObject(); ... call methods } 表中有一列名为find,该列以JSON格式存储一些信息。它的array_length为1。

样本数据: EModelService

问题: 我正在尝试使用bookshelf.js ORM根据users键的值来查询和搜索该表中的所有记录,特别是当其值为email_subscription_prefs时。

这是我的代码的一段经过编辑的片段,显示了我正在尝试使用bookshelf.js实现此查询的内容:

[{"marketing":true,"transactional":true,"collaboration":true,"legal":true,"account":true}]

有人可以告诉我我在尝试查询JSON列marketing的qb.whereRaw语句上做错了什么吗?

true表中有数千条记录的地方,代码不返回任何内容。

谢谢。

1 个答案:

答案 0 :(得分:1)

您似乎在示例数据中有一个对象数组,而不是单个json对象。

[
  {
    "marketing":true,
    "transactional":true,
    "collaboration":true,
    "legal":true,
    "account":true
  }
]

看起来您正在尝试引用数组中找不到的email_subscription_prefs->>'marketing'

要获取数组中第一项的marketing属性,您应该执行以下操作:

email_subscription_prefs->0->>'marketing'

如果这不是问题,那么您将需要从数据库中添加一些示例数据,以便能够说明问题所在。您当前的描述对查询表的描述不够好。