我的表(评论)中有一列名为 reviewers
。
它是通过 knex 定义的:table.json('reviewers').notNullable();
它只是一个 ID 数组:
['id1', 'id2', 'idn']
我想查询表并返回出现字符串的所有行,即“id2”。
我试过:
Review.query()
.whereJsonHasAny('reviewers', 'id2')
但我一直收到错误:
错误:运算符不存在:json ?|文本[]
我可以退回到 raw
但我似乎无法这样做,除非我只查询非 json 列然后使用逻辑进行过滤。
最佳答案
.whereJsonHasAny
仅用于检查对象是否具有键。看起来 objection.js 文档关于数组元素的工作是错误的(我的错)。
用于查找数组是否包含您需要使用的某些元素 https://vincit.github.io/objection.js/#wherejsonsupersetof
Review.query()
.isSuperSetOf('reviewers', ['id2'])
关于sql - 使用 objection.js 或 knex.js 在 postgres 中的字符串列的 json 数组中查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50614999/