node.js如何连接PostgreSQL,并且对数据库进行相应操作

node.js如何连接PostgreSQL,并且对数据库进行相应操作

PostgreSQL是一种特性非常齐全的自由软件的对象-关系型数据库管理系统(ORDBMS),是以加州大学计算机系开发的POSTGRES,4.2版本为基础的对象关系型数据库管理系统。POSTGRES的许多领先概念只是在比较迟的时候才出现在商业网站数据库中。PostgreSQL支持大部分的SQL标准并且提供了很多其他现代特性,如复杂查询、外键、触发器、视图、事务完整性、多版本并发控制等。同样,PostgreSQL也可以用许多方法扩展,例如通过增加新的数据类型、函数、操作符、聚集函数、索引方法、过程语言等。另外,因为许可证的灵活,任何人都可以以任何目的免费使用、修改和分发PostgreSQL。
本文主要介绍如何用node.js连接PostgreSQL数据库,并且对数据库进行相应的需求操作,该文完成的是接口的编写,该接口可连接PostgreSQL数据库,然后对数据库进行数据查询等操作。

编译环境

编译软件:Visual Studio Code
使用到express框架:Express 是一个简洁而灵活的 node.js Web应用框架, 提供了一系列强大特性帮助你创建各种 Web 应用,和丰富的 HTTP 工具。
使用 Express 可以快速地搭建一个完整功能的网站。

index.js

//1、引入express模块
const express=require('express')
//2、创建app对象,通过语法express() 底层原理http模块的createServer
const app=express()
const path=require('path')
const bodyparser=require('body-parser');
app.use(bodyparser.urlencoded({extende:false}));
app.use(bodyparser.json())
//导入swagger 利用swagger生成接口文档
const swaggerJsdoc=require('swagger-jsdoc')
const swaggerui=require('swagger-ui-express')
//配置swagger
const options={
    definition:{
        openapi: '3.0.0',//openapi版本
        info:{//项目信息
            title:'',//项目标题
            version:'1.0.0',//版本号
            description:''//描述
        }
    },
    apis:[path.join(__dirname,'/routes/*.js')]//api文档由哪些命名文件生成
}
const swaggerSpec=swaggerJsdoc(options);
app.use('/api',swaggerui.serve,swaggerui.setup(swaggerSpec,{explorer: true}))//定义swagger访问的路由

//定义路由
const PieDateRouter =require('./routes/DateRoute')
app.use('/',PieDateRouter)

//启动服务监听端口
//app.listen(3000)
app.listen(3000,()=>{
    console.log('http://localhost:3000')
})

routes/DateRoute.js

const express=require('express')
const router=express.Router();

//控制器添加
const DateController=require('../controller/DateController.js')

router.get('/FindDate',DateController.finddate)

module.exports= router

controller/DateController.js

const {

    
    Date,
    

}=require('../model/DateModel')

 //定义处理方法  
 const  finddate=async(req,res)=>{
    //获取数据
    //let choice=req.params.id;

    let rs=await Date()
    if(rs){
        res.send({
            meta:{
                state:200,
                msg:'查询成功'
            },data:rs
            /*JSON.parse(JSON.stringify(rs)
            .replace(/count/g,'rate')
            上述代码可改变输出的结果样式,输出结果为json格式
            */
            )
        })
    }else {
        res.send({
            meta:{
                state:500,
                msg:'查询失败'
            },data:null
        })
    }
}





//导出成员
module.exports={

    finddate
    
}

model/DateModel

const pg = require('pg')

//创建链接对象
const con={
    host:'localhost',//对应服务器,如果是本地,则为localhost
    user:'postgres',
    password:'',
    port:'',
    database:''
}

const pool=new pg.Pool(con);
pool.connect(function(err){
    if(err) {
        return console.error('数据库连接出错', err);
    }
    return console.log('数据库连接成功')
})


const Date=()=>{
//常用sql语句,和mysql语句基本一致
    var sql='select 车间,count(*) from crane group by("车间")';
    return pool.query(sql)

    .then(res=>{
       /* node.js中数据的统计加法
       var sum=0;
        for(var i=0;i<res.rows.length;i++){
            sum+=Number(res.rows[i].count);
            //console.log(res.rows[i].count);
        }*/
        //console.log(sum);
        /*计算数据的小数保留
        for(var i=0;i<res.rows.length;i++){
            res.rows[i].count=(res.rows[i].count/sum).toFixed(3);
        }*/
        return res.rows;//传出查询到的数据
    })
    .catch(err=>{
            console.log('查询失败'+err)
            return false
        }
    )
}
//关闭连接

module.exports={
    Date
}

运行

在脚本编辑器上输入node index.js
就可运行接口,然后在postman上输入接口(http://localhost:3000/FindDate)就可进行接口的测试。

  • 1
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值