我的表(评论)中有一列名为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列,然后使用逻辑进行过滤。
答案 0 :(得分:1)
.whereJsonHasAny
仅用于检查对象是否有密钥。看起来像objection.js文档对于数组元素的工作是错误的(我的坏)。
查找数组是否包含某些元素需要使用 https://vincit.github.io/objection.js/#wherejsonsupersetof
Review.query()
.isSuperSetOf('reviewers', ['id2'])