如何解决NodeJS –在PostgreSQL查询中添加字符串数组
我正在尝试编写一个postgres查询(使用使用node-postgres包创建的池在nodejs中执行),该查询将在表中插入新行。该表中的列之一为text[]
类型。我的代码如下:
pool.query('INSERT INTO paragraphs (lines) VALUES (ARRAY[$1]::TEXT[]) RETURNING id',[my_array],(err,results) => {
if (err) {
reject(err)
return;
}
resolve(results.rows[0].id)
})
paragraphs
是表的名称,lines
是类型text[]
的列的名称。 my_array
是字符串列表。我的问题是,插入的不是字符串数组,而是格式化为数组的单个字符串。 e.x。:
{"[\"First line\",\"Second line\",\"Third Line\"]"}
我希望它是
{"First line","Second line","Third Line"}
我也尝试取出ARRAY
和TEXT
部分(因此,上面的查询中的sql看起来像INSERT INTO paragraphs (lines) VALUES ($1) RETURNING id
),但随后出现错误:
malformed array literal: "["New First line","Third Line"]"
DETAIL: "[" must introduce explicitly-specified array dimensions.
通过池执行的查询将字符串列表插入到nodejs的PostgreSQL表中的正确方法是什么?
解决方法
根据:https://node-postgres.com/features/queries#parameterized-query
作为第二个参数传递给query()的参数将使用以下规则转换为原始数据类型: ...
数组
转换为描述Postgres数组的字符串。每个数组项都使用此处描述的规则进行递归转换。
所以:
VALUES ($1)
或VALUES ($1::TEXT[])
应该就足够了。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。