使用objection.js或knex.js在postgres中的json数组字符串列中查询

时间:2018-05-31 00:19:29

标签: sql node.js postgresql knex.js objection.js

我的表(评论)中有一列名为reviewers

它是通过knex:table.json('reviewers').notNullable();

定义的

它只是一系列ID: ['id1', 'id2', 'idn' ]

我想查询基于表格并返回所有出现字符串的行,即' id2'。

我试图这样做:

Review.query()
  .whereJsonHasAny('reviewers', 'id2')

但我一直收到错误: error: operator does not exist: json ?| text[]

我可以回到raw但我似乎无法做到这一点,除非我只是查询非json列,然后使用逻辑进行过滤。

1 个答案:

答案 0 :(得分:1)

.whereJsonHasAny仅用于检查对象是否有密钥。看起来像objection.js文档对于数组元素的工作是错误的(我的坏)。

查找数组是否包含某些元素需要使用 https://vincit.github.io/objection.js/#wherejsonsupersetof

Review.query()
  .isSuperSetOf('reviewers', ['id2'])