安装 npm i pg ,如果慢的话,记得爬梯子

连接池的方式:

var pg = require('pg');

// 数据库配置
var config = {
user:"postgres",
database:"test",
password:"postgres",
port:5432,
// 扩展属性
max:20, // 连接池最大连接数
idleTimeoutMillis:3000, // 连接最大空闲时间 3s
}
// 创建连接池
var pool = new pg.Pool(config);
// 查询
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
});
});

客户端直连方式:

const pg=require('pg')
var conString = "postgres://username:password@localhost/databaseName";
var client = new pg.Client(conString);
client.connect(function(err) {
if(err) {
return console.error('连接postgreSQL数据库失败', err);
}
client.query('SELECT * FROM tableName', function(err, data) {
if(err) {
return console.error('查询失败', err);
}else{
// console.log('成功',data.rows);
console.log('成功',JSON.stringify(data.rows));
}
client.end();
});
});

自己摸索的一种方式:

// 连接pg
var pg = require('pg');
var pool = new pg.Pool({
host: 'XXXXXX',
user: 'XXXX',
password: 'XXXXX',
database: 'XXX',
port:5432,
max:20, // 连接池最大连接数
idleTimeoutMillis:3000, // 连接最大空闲时间 3s
}); function query(sql, callback) {
pool.connect(function (err, connection,done) {
if (err) {
console.log('connect query:' + err.message);
return;
}
// Use the connection
connection.query(sql,[],function (err, rows) {
done();
callback(err, rows);
//connection.release();//释放链接
});
});
}
exports.query = query;
/**
* 获取survey
*localhost:5000/getAllSurveyList
*/
app.get('/getAllSurveyList', function (req, res) {
console.log("getAllSurveyList");
db.query('select id,trim(latitude) as latitude,trim(lontitude) as lontitude,isshow as '+'"'+'isShow'+'"'+' from survey', function (err,rows) {
if (err) {
console.log(err);
console.log('--getAllSurveyList: 查询失败');
res.json({result:'false',datas: null});
} else {
console.log('--getAllSurveyList: 查询成功');
//console.log(rows);
res.json({result: 'true', datas: rows.rows});
}
})
});

CRUD

var pg = require('./pg'); //加载模块node-postgres,该模块要与本文件放于同一个目录下
var conString = "postgres://postgres:postgres@localhost:5432/node-test";//此时数据库必须已经创建
//anything://user:password@host:port/database
var client = new pg.Client(conString); client.connect(function(err) {
if(err) {
return console.error('could not connect to postgres', err);
} //删除存在表
console.log("Dropping table 'person'")
var query = client.query("drop table if exists person");
query.on('end', function() {
console.log("Dropped!");
}); //创建表
console.log("Creating table 'person'");
query = client.query("create table person(id serial, username varchar(10), password varchar(10), age integer)");
query.on('end', function(){
console.log("Created!");
}); //添加
client.query('INSERT INTO person(username, password, age) VALUES($1, $2, $3)', ["zhangsan", "123456", 20], function(err, result) {
console.log( "====================add========================");
if(err) {
console.log(err);
return rollback(client);
}
console.log( result);
}); //查询
client.query('select username, password, age from person where id = $1', [3], function(err, result) {
console.log( "===================query=========================");
if(err) {
console.log(err);
}
console.log(result.rows[0]);
}); //更新
client.query('update person set password=$1 where id = $2', ["11a",1], function(err, result) {
console.log( "=====================update=======================");
if(err) {
console.log(err);
}
console.log(result);
}); //删除
client.query('delete from person where id = $1', [1], function(err, result) {
console.log( "====================remove=======================");
if(err) {
console.log(err);
}
console.log(result);
client.end();
}); }); var rollback = function(client) {
client.query('ROLLBACK', function() {
client.end();
});
};

node 和 postgres的更多相关文章

  1. Node.js连接postgres

    一.下载Node.js postgres驱动 Node.js里面没有postgres模块的,我们需要安装node-postgres模块. node-postgres模块的下载地址为:https://g ...

  2. ref:web security最新学习资料收集

    ref:https://chybeta.github.io/2017/08/19/Web-Security-Learning/ ref:https://github.com/CHYbeta/Web-S ...

  3. 在CentOS上以源码编译的方式安装Greenplum数据库

    集群组成: 一台主机,一台从节点. 系统环境: 操作系统:CentOS 7,64位,7.4.1708(/etc/redhat-release中查看) CPU:AMD Fx-8300 8核 内存:8GB ...

  4. postgresql数据库部署

    运维开发技术交流群欢迎大家加入一起学习(QQ:722381733) 一.postgresql数据库部署 1.前往postgresql安装包的目录(这里我部署的是10.5的版本) [root@web1 ...

  5. Web-Security-Learning

    Web Security sql注入 MySql MySQL False 注入及技巧总结 MySQL 注入攻击与防御 sql注入学习总结 SQL注入防御与绕过的几种姿势 MySQL偏门技巧 mysql ...

  6. 2021 年写 JavaScript 代码的 17 个优化技巧

    我们经常会写一些 JavaScript 代码,但是如何写出干净又易维护的代码呢?本文将讲解 17 个 JavaScript 代码的技术帮助你提高编程水平,此外,本文可以帮助您为 2021 年的 Jav ...

  7. babeljs源码

    babel.min.js!function(e,t){"object"==typeof exports&&"object"==typeof mo ...

  8. 在node.js中,使用基于ORM架构的Sequelize,操作mysql数据库之增删改查

    Sequelize是一个基于promise的关系型数据库ORM框架,这个库完全采用JavaScript开发并且能够用在Node.JS环境中,易于使用,支持多SQL方言(dialect),.它当前支持M ...

  9. Node黑客开发的10个好习惯(2016)

    在2015年底之际,javascript开发者已经掌握了大量的工具.最后一次我们调查的时候,现代化的JS蓝图才刚刚出现.今天,我们很容易在JS的庞大生态系统中迷失,而成功的团队大部分时间都遵守着JS开 ...

随机推荐

  1. arcgis python 获得arcgis安装版本和安装位置

    import arcpy print(arcpy.GetInstallInfo()['Version']) 和获得ArcGIS版本和安装位置 import arcpy # Use the dictio ...

  2. sklearn里计算roc_auc_score,报错ValueError: bad input shape

    用sklearn的DecisionTreeClassifer训练模型,然后用roc_auc_score计算模型的auc.代码如下 clf = DecisionTreeClassifier(criter ...

  3. pytorch中的学习率调整函数

    参考:https://pytorch.org/docs/master/optim.html#how-to-adjust-learning-rate torch.optim.lr_scheduler提供 ...

  4. win10下安装Kafka

    去kafka官网(http://kafka.apache.org/downloads.html)下最新包(目前是2.3.0),不分操作系统,直接点二进制压缩包链接跳过去下载即可 -> 解压到你指 ...

  5. hadoop目录命令

    下面是经常使用到的,以此记录备忘 1.查看hadoop目录 命令: hadoop fs -ls / 2.创建目录 命令:hadoop fs -mkdir /目录名 3.将文件上传hadoop中(也就是 ...

  6. npm教程、脚手架

    使用之前,我们先来掌握3个东西是用来干什么的. npm: Nodejs下的包管理器. webpack: 它主要的用途是通过CommonJS的语法把所有浏览器端需要发布的静态资源做相应的准备,比如资源的 ...

  7. OpenStack Heat模板详解

    Heat模板全称为heat orchestration template,简称为HOT. 1 典型Heat模板结构 heat_template_version: 2015-04-30 descript ...

  8. CentOS7下搭建zabbix监控(三)——Zabbix监控服务配置

    CentOS7下搭建zabbix监控(一)——Zabbix监控端配置 CentOS7下搭建zabbix监控(二)——Zabbix被监控端配置 (1).配置Zabbix监控Apache服务 主机名:yo ...

  9. MGR集群搭建

    MGR全称MySQL Group Replication(Mysql组复制),是MySQL官方于2016年12月推出的一个全新的高可用与高扩展的解决方案.MGR提供了高可用.高扩展.高可靠的MySQL ...

  10. Java RSA分段加密

    我们通过Java进行RSA加密的时候,可能会出现如下问题: /** * 私钥加密 * * @param data 待加密数据 * @param key 密钥 * @return byte[] 加密数据 ...