在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)

今天就写到这里啦~
  • 小伙伴们,( ̄ω ̄( ̄ω ̄〃 ( ̄ω ̄〃)ゝ我们明天再见啦~~
  • 大家要天天开心哦

欢迎大家指出文章需要改正之处~

学无止境,合作共赢

欢迎路过的小哥哥小姐姐们提出更好的意见哇~~

相关推荐
只睡四小时8 小时前
MCP 弃用 SSE?Node 分帧漏 81.7% 事件
node.js·webassembly·实时通信·mcp·streamable http
hey you~18 小时前
个体户门店办理400电话,如何对接订单系统实现来电弹窗
node.js·webhook·400电话·门店数字化·来电弹窗·订单系统对接
YIAN2 天前
RAG 学到最后,我真正学会的不是“检索”,而是让系统知道自己缺什么
langchain·node.js·llm
用户11977079480732 天前
GitHub 电商开源项目分享:用 sharp 批量出饰品主图,试了裁剪、细节图和色彩配置文件三个坑
前端·node.js
donecoding2 天前
pnpm 配好了,为什么执行的还是另一份?命令入口与运行时排查
node.js·前端工程化
江屿风2 天前
【Plain Language Large Model】【从浏览器到全栈:一课精通Node.js三剑客】流食般投喂
笔记·前端框架·npm·node.js·js·npx
SomeOtherTime2 天前
node.js基础(AI回答)
node.js
雨季mo浅忆3 天前
记录Node.js安全漏洞及其内置Brotli解码器问题
node.js·安全性测试
tommyjiatong3 天前
资安底座连环雷:从 PHP2Shell 到 Node2Shell
node.js·php
SEO_juper3 天前
Bash 交叉验证 robots.txt 和 sitemap:两个文件自相矛盾,页面永远收录不了
开发语言·python·node.js·json·bash