NodeJS-在PostgreSQL查询中添加字符串数组 [英] NodeJS–Add Array of String in PostgreSQL Query

查看:16
本文介绍了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是我的表的名称,linestext[]类型的列的名称。my_array是一个字符串列表。我的问题是,插入的不是字符串数组,而是格式类似数组的单个字符串。E.X:

{"["First line", "Second line", "Third Line"]"}

我希望是:

{"First line", "Second line", "Third Line"}

我还尝试取出ARRAYTEXT部分(因此,在上面的查询中,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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆