首页 > 编程语言 >在Node.js项目中使用node-postgres连接postgres以及报错指南

在Node.js项目中使用node-postgres连接postgres以及报错指南

时间:2023-10-14 20:36:53浏览次数:39  
标签:Node node const postgres await client 报错

什么是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', '[email protected]']
 
const res = await client.query(text, values)

今天就写到这里啦~

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

欢迎大家指出文章需要改正之处~
学无止境,合作共赢

在这里插入图片描述

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

标签:Node,node,const,postgres,await,client,报错
From: https://www.cnblogs.com/sugartang/p/17604127.html

相关文章

  • Vue3 + Quasar系列-代码配置以及报错汇总记录(不断更新中)
    1.Vue3+Quasar系列-代码配置打包去掉hash后缀去掉hashhttps://quasar.dev/quasar-cli-vite/developing-pwa/configuring-pwa2.Vue3+Quasar改变主题背景quasar的样式和其他的框架修改不太一样,需要我们使用动态的方式来进行变更,一般来说有两种方案进行主题修改方案一:......
  • 启动wsl ubuntu 报错
    解决方案:1、管理员打开PwoerShell2、输入Enable-WindowsOptionalFeature-Online-FeatureNameMicrosoft-Windows-Subsystem-Linux(如下图所示)  ......
  • vue webpack 报错处理
    1.vue-cli3中console.log报错:ModuleWarning(from./node_modules/eslint-loader/index.js):error:Unexpectedconsolestatement(no-console)at(1).原因:使用ESLint检查代码质量是进行提示的.(2).解决:window.console.log(res);2.图片引入:{id:1,src:require(......
  • 图文并茂手把手教你在MAC配置Android,nodejs环境,配置安卓真机支持投屏以及测试
    先说nodejs和npm这个很简单,只需要点击下面链接,安装node.js环境即可https://nodejs.org/zh-cn/AndroidAndroidStudio下载地址及版本说明Android开发者官网:https://developer.android.com/index.html(全球)https://developer.android.googl......
  • Argument for '--moduleResolution' option must be: 'node', Unknown compiler opt
    node_modules/@vue/tsconfig/tsconfig.json(12,25):errorTS6046:Argumentfor'--moduleResolution'optionmustbe:'node','classic','node16','nodenext'.node_modules/@vue/tsconfig/tsconfig.json(33,5):erro......
  • 下载的PC游戏启动后报错:无法加载 DLL“steam_api64”: 动态链接库(DLL)初始化例程失败
    无法加载DLL“steam_api64”:动态链接库(DLL)初始化例程失败。(异常来自HRESU解决方式:将文件夹拷贝到Steam-->steamapps文件夹下面还好是忍者神龟抛了个异常,才找到了问题所在,论抛异常的重要性!!!忍者神龟如龙......
  • postgreSQL基本操作
    一、使用psql工具连接到数据库psql-Upostgres#postgres是具体的用户名,应具体情况具体分析效果如图:二、有关于数据库的基本指令pg不同于mysql,它的指令更为精简1、获取所有数据库信息\l2、选定数据库\c${yourdatebasename}3、获取所有表的信息\dt#此指令需......
  • kafka 消费报错
    具体报错信息Traceback(mostrecentcalllast):File"/root/kafkatomysql.py",line166,in<module>consumer.commit()File"/usr/local/python3.9/lib/python3.9/site-packages/kafka/consumer/group.py",line527,incommitself._coo......
  • 本地有多个node切换不同版本node方法
    1.在当前使用的node版本,进行你要切换node版本的设置和配置npmconfigsetprefix"F:\node14\node_global"npmconfigsetcache"F:\node14\node_cache"假如你当前使用的是node14,这里就写node18,当前使用的是node18,这里就写node14。当然具体的路径名称根据你本地安装路径来配......
  • git中报错
    git中报错集合1......