使用Vercel SQL工具向PostgreSQL插入数组遇类型错误求助
解决Vercel PostgreSQL插入数组的类型错误
问题原因
直接将JavaScript数组传入Vercel的sql模板字符串时,类型检查会报错——模板期望接收**原始类型(Primitive)**而非数组;同时PostgreSQL无法直接识别未做处理的JS数组。另外USER是PostgreSQL的保留关键字,直接使用会引发语法问题。
修复代码
使用@vercel/postgres提供的sql.array()方法包装数组,同时给表名加上双引号避免关键字冲突:
import { sql } from '@vercel/postgres'; const aliases = ['uncle', 'joe']; await sql`INSERT INTO "USER" (aliases) VALUES (${sql.array(aliases)})`;
说明
sql.array()会将JavaScript数组转换为PostgreSQL兼容的数组格式,同时满足模板的类型要求- 用双引号包裹
"USER"是因为它是PostgreSQL的保留关键字,直接使用会触发语法错误
内容的提问来源于stack exchange,提问作者Anis Smail
相关产品推荐
相关产品推荐

