NodeJS——在 PostgreSQL 查询中添加字符串数组
NodeJS–Add Array of String in PostgreSQL Query
我正在尝试编写一个 postgres 查询(使用使用 node-postgres 包创建的池在 nodejs 中执行),它将在 table 中插入一个新行。 table 中的其中一列的类型为 text[]
。我的代码如下:
pool.query('INSERT INTO paragraphs (lines) VALUES (ARRAY[]::TEXT[]) RETURNING id', [my_array], (err, results) => {
if (err) {
reject(err)
return;
}
resolve(results.rows[0].id)
})
paragraphs
是我的 table 的名称,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 () RETURNING id
),但后来我收到了错误:
malformed array literal: "["New First line", "Second line", "Third Line"]"
DETAIL: "[" must introduce explicitly-specified array dimensions.
通过池执行的查询将字符串列表插入 Node.js 中的 PostgreSQL tables 的正确方法是什么?
根据:https://node-postgres.com/features/queries#parameterized-query
Parameters passed as the second argument to query() will be converted to raw data types using the following rules:
...
Array
Converted to a string that describes a Postgres array. Each array item is recursively converted using the rules described here.
所以:
VALUES ()
或VALUES (::TEXT[])
应该就够了。
我正在尝试编写一个 postgres 查询(使用使用 node-postgres 包创建的池在 nodejs 中执行),它将在 table 中插入一个新行。 table 中的其中一列的类型为 text[]
。我的代码如下:
pool.query('INSERT INTO paragraphs (lines) VALUES (ARRAY[]::TEXT[]) RETURNING id', [my_array], (err, results) => {
if (err) {
reject(err)
return;
}
resolve(results.rows[0].id)
})
paragraphs
是我的 table 的名称,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 () RETURNING id
),但后来我收到了错误:
malformed array literal: "["New First line", "Second line", "Third Line"]"
DETAIL: "[" must introduce explicitly-specified array dimensions.
通过池执行的查询将字符串列表插入 Node.js 中的 PostgreSQL tables 的正确方法是什么?
根据:https://node-postgres.com/features/queries#parameterized-query
Parameters passed as the second argument to query() will be converted to raw data types using the following rules: ...
Array
Converted to a string that describes a Postgres array. Each array item is recursively converted using the rules described here.
所以:
VALUES ()
或VALUES (::TEXT[])
应该就够了。