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

标签 sql node.js postgresql knex.js objection.js

我的表(评论)中有一列名为 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/

相关文章:

sql - 我什么时候应该在 PL/SQL 中使用过程或函数?

node.js - Disconnect 事件在 2 分钟后被触发

node.js - Chrome 在重定向后不发送 cookie

django - 如何从刷新数据库中恢复 South

sql - 如何在没有分组依据的情况下进行求和

MySQL (MariaDB) while 循环

mysql 和 sql 开发人员

mysql - 创建一个事件并插入

javascript - 是否可以将 Realm 与 A​​ngular 2 一起使用?

sql - 有没有办法授予对尚不存在(或重新创建)的表的权限?