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

query within a json array of strings column in postgres with objection.js or knex.js

我的 table(评论)中有一个名为 reviewers 的专栏。

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

它只是一个 ID 数组: ['id1', 'id2', 'idn' ]

我想查询基于 table 和 return 所有出现字符串的行,即 'id2'.

我试过:

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

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

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

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

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

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