Запрос в массиве json столбца строк в postgres с помощью objection.js или knex.js

У меня есть столбец в моей таблице (Отзывы) называется reviewers,

Это было определено через knex: table.json('reviewers').notNullable();

Это просто массив идентификаторов:['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/

Review.query()
  .isSuperSetOf('reviewers', ['id2'])
Другие вопросы по тегам