使用 objection.js 或 knex.js 在 postgres 中的字符串列的 json 数组中查询
Posted
技术标签:
【中文标题】使用 objection.js 或 knex.js 在 postgres 中的字符串列的 json 数组中查询【英文标题】:query within a json array of strings column in postgres with objection.js or knex.js 【发布时间】:2018-11-09 22:01:43 【问题描述】:我的表(评论)中有一个名为 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】:.whereJsonHasAny
仅用于检查对象是否有键。看起来 objection.js 文档对于数组元素的工作是错误的(我的错)。
用于查找数组是否包含您需要使用的某些元素 https://vincit.github.io/objection.js/#wherejsonsupersetof
Review.query()
.isSuperSetOf('reviewers', ['id2'])
【讨论】:
以上是关于使用 objection.js 或 knex.js 在 postgres 中的字符串列的 json 数组中查询的主要内容,如果未能解决你的问题,请参考以下文章
使用 Objection JS 如何使用 withGraphFetched 选择特定列
Objection.js:所有 where 子句添加后是不是可以用括号括起来?