在Node.js项目中使用node-postgres连接postgres以及报错指南
什么是node-postgres
官方文档
nodepostgres是node.js模块的集合,用于与PostgreSQL数据库接口。它支持回调、promise、async/await、连接池、准备好的语句、游标、流式结果、C/C++绑定、富类型解析等等!就像PostgreSQL本身一样,它有很多功能:本文档旨在让您快速、正确地运行。它还试图为更高级和边缘案例主题提供指南,使您能够从node.js充分利用PostgreSQL的功能。
如何使用它?
下载依赖
npm install pg
执行语句
import { Client } from 'pg'
const client = new Client({
host: 'my.database-server.com',
port: 5334,
database: 'database-name',
user: 'database-user',
password: 'secretpassword!!',
})
await client.connect()
const res = await client.query('SELECT $1::text as message', ['Hello world!'])
console.log(res.rows[0].message) // Hello world!
await client.end()
问题解决汇总
报错1:postgres db报错"err":{"type":"DatabaseError","message":"column "xxx报错点xxx" does not exist",
"err":{"type":"DatabaseError","message":"column \"xxx报错点xxx\" does not exist",
解决方案
遇到这种报错,八成是你的sql句子拼的有问题,仔细检查去吧
举个栗子:
const insertApp = await client.query(`INSERT INTO applications
(app_name )
VALUES
('${validResult.appName}')
ON CONFLICT (app_name)
DO NOTHING;
`);
建议改成下面的写法
- node-postgres参考文档
- 字符串连接参数直接到查询文本可能(而且经常)导致sql注入漏洞。
- node-postgres支持参数化查询,将查询文本和参数原原原本地传递给PostgreSQL服务器,更为安全
- 如果参数化null和undefined,则两者都将被转换为null。
const text = 'INSERT INTO users(name, email) VALUES($1, $2) RETURNING *'
const values = ['brianc', 'brian.m.carlson@gmail.com']
const res = await client.query(text, values)
今天就写到这里啦~
- 小伙伴们,( ̄ω ̄( ̄ω ̄〃 ( ̄ω ̄〃)ゝ我们明天再见啦~~
- 大家要天天开心哦
欢迎大家指出文章需要改正之处~
学无止境,合作共赢
欢迎路过的小哥哥小姐姐们提出更好的意见哇~~
标签:
面向全栈
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 字符编码:从基础到乱码解决