前言
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方法肯定是支持的,如下:









