首页 > 语言 > JavaScript > 正文

Node.js连接postgreSQL并进行数据操作

2024-05-06 15:04:45
字体:
来源:转载
供稿:网友

前言

PostgreSql是一个面向对象的关系数据库,postgis是一个基于PostgreSql的空间数据库插件,主要用于管理地理空间数据。因此在GIS领域,广泛使用PostgreSql作为空间数据库。

首先使用npm安装数据库连接模块:

npm install --save pg 

连接池创建

然后代码中引入pg模块,并编写数据库配置:

var pg = require('pg');// 数据库配置var config = {  user:"postgres", database:"ghost", password:"123456", port:5432, // 扩展属性 max:20, // 连接池最大连接数 idleTimeoutMillis:3000, // 连接最大空闲时间 3s}

pg模块中有两种数据库连接方式,先讲连接池模式,下面是创建连接池:

// 创建连接池var pool = new pg.Pool(config); 

传入配置后就创建好了连接池。

查询数据

查询首先创建好连接,然后调用api进行查询:

// 查询pool.connect(function(err, client, done) {  if(err) { return console.error('数据库连接出错', err); } // 简单输出个 Hello World client.query('SELECT $1::varchar AS OUT', ["Hello World"], function(err, result) { done();// 释放连接(将其返回给连接池) if(err) { return console.error('查询出错', err); } console.log(result.rows[0].out); //output: Hello World });});

输出:

Hello World 

参数done是一个函数,调用这个函数可以将关闭连接(即将连接还给连接池)。

上面的是需要写回调的异步查询,可以使用ES 7中await和async(但需安装最新版本的pg,另外,需要使用7.2以上的nodejs,最好就是用最新的nodejs)优化代码,如下:

// Async & Await 方式(需 node ^7.2.1,运行时使用 node --harmony-async-await index.js)var query = async () => {  // 同步创建连接 var connect = await pool.connect() try { // 同步等待结果 var res = await connect.query('SELECT $1::varchar AS OUT', ['Hello World By Async&Await']) console.log(res.rows[0].out) // 可以通过rows遍历数据 } finally { connect.release() }}// 异步进行数据库处理query().catch(e => console.error(e.message, e.stack)); 

在升级了nodejs之后,执行代码的时候,需要加参数--harmony-async-await

npm --harmony-async-await index.js 

当然,都支持到ES7了,ES6的Promise方法肯定是支持的,如下:

pool.connect().then(client=>{  client.query('SELECT $1::varchar AS OUT', ['Hello World By Promise']).then(res=>{ client.release() console.log(res.rows[0].out) }).catch(e => { client.release() console.error('query error', e.message, e.stack) })})

插入、修改、删除数据

插入、修改、删除数据和查询的差不多

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

图片精选