Как вставить данные jsonb [] в столбец, используя pg-обещание - PullRequest
1 голос
/ 08 ноября 2019

Учитывая таблицу со столбцом типа jsonb[], как мне вставить массив json в столбец?

Использование предоставленных форматеров :array, :json не будет работать в этом случае - если я не пропущу правильную комбинацию или что-то еще.

const links = [
    {
        title: 'IMDB',
        url: 'https://www.imdb.com/title/tt0076759'
    },
    {
        title: 'Rotten Tomatoes',
        url: 'https://www.rottentomatoes.com/m/star_wars'
    }
];

 const result = await db.none(`INSERT INTO tests (links) VALUES ($1:json)`, [links]);

1 Ответ

1 голос
/ 08 ноября 2019

В этом случае вам не нужен фильтр :json библиотеки, так как вам нужен массив объектов JSON, а не JSON с массивом объектов JSON.

Первый форматируется по умолчанию правильно, который затем требует только ::json[] тип приведения:

    await db.none(`INSERT INTO tests(links) VALUES($1::json[])`, [links]);

Другие примечания

  • Использование pg-monitor или событие запрос для вывода выполняемых запросов, для упрощения диагностики.
  • Метод нет может быть разрешен только с null, нет смысла сохранять результат в переменной.
  • Библиотека pg-promise не имеет фильтра :array, см. поддерживаемые фильтры .
...