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


    什么是node-postgres

    官方文档
    nodepostgres是node.js模块的集合,用于与PostgreSQL数据库接口。它支持回调、promise、async/await、连接池、准备好的语句、游标、流式结果、C/C++绑定、富类型解析等等!就像PostgreSQL本身一样,它有很多功能:本文档旨在让您快速、正确地运行。它还试图为更高级和边缘案例主题提供指南,使您能够从node.js充分利用PostgreSQL的功能。

    如何使用它?

    下载依赖
    npm install pg
    
    • 1

    执行语句

    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
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14

    问题解决汇总

    报错1:postgres db报错"err":{“type”:“DatabaseError”,“message”:“column “xxx报错点xxx” does not exist”,

    "err":{"type":"DatabaseError","message":"column \"xxx报错点xxx\" does not exist",
    
    • 1

    解决方案

    遇到这种报错,八成是你的sql句子拼的有问题,仔细检查去吧
    举个栗子:

    const insertApp = await client.query(`INSERT INTO applications 
                  (app_name ) 
                  VALUES 
                  ('${validResult.appName}') 
                  ON CONFLICT (app_name) 
                  DO NOTHING;
                  `);
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    建议改成下面的写法
    • 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)
    
    • 1
    • 2
    • 3
    • 4
    今天就写到这里啦~
    • 小伙伴们,( ̄ω ̄( ̄ω ̄〃 ( ̄ω ̄〃)ゝ我们明天再见啦~~
    • 大家要天天开心哦

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

    在这里插入图片描述

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

  • 相关阅读:
    内存池中的嵌入式指针
    C++ 矩阵的最小路径和解法
    [附源码]Python计算机毕业设计SSM家政服务系统(程序+LW)
    【Android】NDK开发Crash分析
    详解机器学习中的数据处理(二)——特征归一化
    【代码学习】pytorch_lightning
    计算机网络(自顶向下方法)-应用层
    Java8新特性: lambda 表达式介绍
    python代码实现生成二维码
    天津化工杂志天津化工杂志社天津化工编辑部2022年第3期目录
  • 原文地址:https://blog.csdn.net/tangdou369098655/article/details/133829532