node.js - 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
是一个字符串列表。我的问题是插入的不是字符串数组,而是像数组一样格式化的单个字符串。前任:
{"[\"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[])
应该足够了。
推荐阅读
- mysql - 在 Visual Studio 中使用数据库进行编程需要哪些工具?
- java - 接收找不到符号错误,即使所有内容都在范围内声明
- sql - 替换联接中的 NULL 值
- libreoffice-basic - getDataArray() 和“未设置对象变量”错误
- electron - 电子添加 onclick 动态失败
- python - 使用 Python 打开和读取 WhatsApp 文件
- java - 为什么我不能在 Kotlin 中创建文件对象?
- ios - 尽管在资产目录中设置了所有图标,但应用程序继续使用默认图标
- ember.js - Glimmer VM 中的“基于拉取的函数式反应程序”是什么意思?
- python - 在 Python 中使用列表理解过滤先前的索引