如何使用pg-promise将jsonb []数据插入列

时间:2019-11-07 23:19:46

标签: pg-promise

给出一个表,该表的列类型为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 个答案:

答案 0 :(得分:1)

在这种情况下,您不需要库的:json过滤器,因为您需要一个JSON对象数组,而不是一个带有JSON对象数组的JSON。

默认情况下,前者的格式正确,然后只需进行::json[]类型转换:

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

其他说明

  • 使用pg-monitor或事件query输出正在执行的查询,以简化诊断。
  • 方法none只能用null进行解析,将结果存储在变量中毫无意义。
  • 图书馆pg-promise没有任何:array过滤器,请参见supported filters