使用 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'])
我的 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'])