NodeJS-在PostgreSQL查询中添加字符串数组 [英] NodeJS–Add Array of String in PostgreSQL Query
本文介绍了NodeJS-在PostgreSQL查询中添加字符串数组的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我正在尝试编写一个postgres查询(在NodeJS中使用使用node-postgres包创建的池执行),该查询将在表中插入新行。此表中的一列属于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", "Second 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[])
应已足够。
这篇关于NodeJS-在PostgreSQL查询中添加字符串数组的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文