如何使用 pg-promise 将 jsonb[] 数据插入列
How to insert jsonb[] data into column using pg-promise
给定一个 table 和一个 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 (:json)`, [links]);
在这种情况下,您不需要库的 :json
过滤器,因为您需要一个 JSON 对象数组,而不是一个 JSON 数组 JSON 对象。
前者默认格式化正确,后者只需要::json[]
类型转换:
await db.none(`INSERT INTO tests(links) VALUES(::json[])`, [links]);
其他注意事项
- 使用pg-monitor or event query输出正在执行的查询,以便于诊断。
- 方法none只能用
null
解析,没有意义将结果存储在变量中。
- 库
pg-promise
没有任何 :array
过滤器,请参阅 supported filters。
给定一个 table 和一个 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 (:json)`, [links]);
在这种情况下,您不需要库的 :json
过滤器,因为您需要一个 JSON 对象数组,而不是一个 JSON 数组 JSON 对象。
前者默认格式化正确,后者只需要::json[]
类型转换:
await db.none(`INSERT INTO tests(links) VALUES(::json[])`, [links]);
其他注意事项
- 使用pg-monitor or event query输出正在执行的查询,以便于诊断。
- 方法none只能用
null
解析,没有意义将结果存储在变量中。 - 库
pg-promise
没有任何:array
过滤器,请参阅 supported filters。