node 和 postgres
安装 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的更多相关文章
- Node.js连接postgres
一.下载Node.js postgres驱动 Node.js里面没有postgres模块的,我们需要安装node-postgres模块. node-postgres模块的下载地址为:https://g ...
- ref:web security最新学习资料收集
ref:https://chybeta.github.io/2017/08/19/Web-Security-Learning/ ref:https://github.com/CHYbeta/Web-S ...
- 在CentOS上以源码编译的方式安装Greenplum数据库
集群组成: 一台主机,一台从节点. 系统环境: 操作系统:CentOS 7,64位,7.4.1708(/etc/redhat-release中查看) CPU:AMD Fx-8300 8核 内存:8GB ...
- postgresql数据库部署
运维开发技术交流群欢迎大家加入一起学习(QQ:722381733) 一.postgresql数据库部署 1.前往postgresql安装包的目录(这里我部署的是10.5的版本) [root@web1 ...
- Web-Security-Learning
Web Security sql注入 MySql MySQL False 注入及技巧总结 MySQL 注入攻击与防御 sql注入学习总结 SQL注入防御与绕过的几种姿势 MySQL偏门技巧 mysql ...
- 2021 年写 JavaScript 代码的 17 个优化技巧
我们经常会写一些 JavaScript 代码,但是如何写出干净又易维护的代码呢?本文将讲解 17 个 JavaScript 代码的技术帮助你提高编程水平,此外,本文可以帮助您为 2021 年的 Jav ...
- babeljs源码
babel.min.js!function(e,t){"object"==typeof exports&&"object"==typeof mo ...
- 在node.js中,使用基于ORM架构的Sequelize,操作mysql数据库之增删改查
Sequelize是一个基于promise的关系型数据库ORM框架,这个库完全采用JavaScript开发并且能够用在Node.JS环境中,易于使用,支持多SQL方言(dialect),.它当前支持M ...
- Node黑客开发的10个好习惯(2016)
在2015年底之际,javascript开发者已经掌握了大量的工具.最后一次我们调查的时候,现代化的JS蓝图才刚刚出现.今天,我们很容易在JS的庞大生态系统中迷失,而成功的团队大部分时间都遵守着JS开 ...
随机推荐
- The implementation of iterators in C# and its consequences (part 1) Raymond Chen
Likeanonymous methods, iterators in C# are very complex syntactic sugar. You could do it all yoursel ...
- Flutter移动电商实战 --(47)详细页_Flutter_html插件的使用
详情里面是hemlt和图片组成的,但是flutter是不支持html的所以需要其他插件 flutter webview plugin:这个不太好用 flutter_html:用这个插件 先解决之前一个 ...
- Matlab基础:关于图像的基本操作
-- %% 学习目标:学习关于图像的基本操作 %% 通过抖动来增强图像的的色彩对比度 clear all; close all; I = imread('cameraman.tif');%读取灰度图像 ...
- ES6展开运算符数组合并,函数传参
定义: .展开运算符允许一个表达式在某处展开. 使用场景 1.展开函数在多个参数的地方使用 .意指用于函数传参 2.多个元素的地方使用,意指用于数组字面量 3.多个边框的地方使用,意指用于解构赋值 函 ...
- 起步 - 安装 Git
安装 Git 是时候动手尝试下 Git 了,不过得先安装好它.有许多种安装方式,主要分为两种,一种是通过编译源代码来安装:另一种是使用为特定平台预编译好的安装包. 从源代码安装 若是条件允许,从源代码 ...
- python开发-实现redis中的发布订阅功能
Python3学习(二十七):python实现Redis的订阅与发布(sub-pub机制) 先介绍一下redis的pub/sub功能: Pub/Sub功能(means Publish, Subscri ...
- php上传超大文件
1.使用PHP的创始人 Rasmus Lerdorf 写的APC扩展模块来实现(http://pecl.php.net/package/apc) APC实现方法: 安装APC,参照官方文档安装,可以使 ...
- Core Data 的使用
一.概念 1.Core Data 是数据持久化存储的最佳方式 2.数据最终的存储类型可以是:SQLite数据库,XML,二进制,内存里,或自定义数据类型 在Mac OS X 10.5Leopard及以 ...
- vmware安装centos7.5、配置网卡、环境配置
1.vmware安装centos7.5虚拟机 参考连接: https://blog.csdn.net/guo_ridgepole/article/details/78973763 可能遇到的问题 ...
- linux下的进程间通信之共享内存
概念:这种机制允许两个或多个进程通过把公共数据结构放入一个共享内存区来访问它们.如果进程要访问这种数据结构所在的共享内存区,就必须在自己的地址空间中增加一个新线性区,新线性区映射与这个共享内存区相关的 ...