Nodejs对postgresql基本操作的封装方法


Posted in NodeJs onFebruary 20, 2019

基于nodejs平台对postgresql的增删改查基本操作进行了封装,能满足基本的实际应用,比较复杂的SQL需另外实现。

PG.js文件如下:

var pg = require('pg');
var conString = "postgres://username:password@localhost/databasename";
var client = new pg.Client(conString);
 
var PG = function(){
 console.log("准备向****数据库连接...");
};
 
PG.prototype.getConnection = function(){
 client.connect(function (err) {
 if (err) {
  return console.error('could not connect to postgres', err);
 }
 client.query('SELECT NOW() AS "theTime"', function (err, result) {
  if (err) {
  return console.error('error running query', err);
  }
  console.log("hbdfxt数据库连接成功...");
 });
 });
};
 
// 查询函数
//@param str 查询语句
//@param value 相关值
//@param cb 回调函数
var clientHelper = function(str,value,cb){
 client.query(str,value,function(err,result){
 if(err) {
  cb("err");
 }
 else{
  if(result.rows != undefined)
  cb(result.rows);
  else
  cb();
 }
 });
}
//增
//@param tablename 数据表名称
//@param fields 更新的字段和值,json格式
//@param cb 回调函数
PG.prototype.save = function(tablename,fields,cb){
 if(!tablename) return;
 var str = "insert into "+tablename+"(";
 var field = [];
 var value = [];
 var num = [];
 var count = 0;
 for(var i in fields){
 count++;
 field.push(i);
 value.push(fields[i]);
 num.push("$"+count);
 }
 str += field.join(",") +") values("+num.join(",")+")";
 clientHelper(str,value,cb);
};
 
//删除
//@param tablename 数据表名称
//@param fields 条件字段和值,json格式
//@param cb 回调函数
PG.prototype.remove = function(tablename,fields,cb){
 if(!tablename) return;
 var str = "delete from "+tablename+" where ";
 var field = [];
 var value = [];
 var count = 0;
 for(var i in fields){
 count++;
 field.push(i+"=$" +count);
 value.push(fields[i]);
 }
 str += field.join(" and ");
 clientHelper(str,value,cb);
}
 
//修改
//@param tablename 数据表名称
//@param fields 更新的字段和值,json格式
//@param mainfields 条件字段和值,json格式
PG.prototype.update = function(tablename,mainfields,fields,cb){
 if(!tablename) return;
 var str = "update "+tablename+" set ";
 var field = [];
 var value = [];
 var count = 0;
 for(var i in fields){
 count++;
 field.push(i+"=$"+count);
 value.push(fields[i]);
 }
 str += field.join(",") +" where ";
 field = [];
 for(var j in mainfields){
 count++;
 field.push(j+"=$"+count);
 value.push(mainfields[j]);
 }
 str += field.join(" and ");
 clientHelper(str,value,cb);
}
 
//查询
//@param tablename 数据表名称
//@param fields 条件字段和值,json格式
//@param returnfields 返回字段
//@param cb 回调函数
PG.prototype.select = function(tablename,fields,returnfields,cb){
 if(!tablename) return;
 var returnStr = "";
 if(returnfields.length == 0)
 returnStr = '*';
 else
 returnStr= returnfields.join(",");
 var str = "select "+returnStr+ " from "+tablename+" where ";
 var field = [];
 var value = [];
 var count = 0;
 for(var i in fields){
 count++;
 field.push(i+"=$"+count);
 value.push(fields[i]);
 }
 str += field.join(" and ");
 clientHelper(str,value,cb);
};
 
module.exports = new PG();

用法很简单,如下:

var pgclient = require('./PG');// 引用上述文件
pgclient.getConnection();
 
// 调用上述四个函数即可
pgclient.save('userinfo',{'name': admin},cb);<span style="font-family: Arial, Helvetica, sans-serif;">.</span>

以上这篇Nodejs对postgresql基本操作的封装方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

NodeJs 相关文章推荐
nodejs的10个性能优化技巧
Jul 15 NodeJs
NodeJS学习笔记之MongoDB模块
Jan 13 NodeJs
nodejs6下使用koa2框架实例
May 18 NodeJs
详解nodejs的express如何自动生成项目框架
Jul 12 NodeJs
nodejs简单访问及操作mysql数据库的方法示例
Mar 15 NodeJs
nodejs实现超简单生成二维码的方法
Mar 17 NodeJs
nodeJS服务器的创建和重新启动的实现方法
May 12 NodeJs
解决Nodejs全局安装模块后找不到命令的问题
May 15 NodeJs
详解nodejs 开发企业微信第三方应用入门教程
Mar 12 NodeJs
详解nodejs http请求相关总结
Mar 31 NodeJs
nodejs分离html文件里面的js和css的方法
Apr 09 NodeJs
深入理解nodejs搭建静态服务器(实现命令行)
Feb 05 #NodeJs
Nodejs实现的操作MongoDB数据库功能完整示例
Feb 02 #NodeJs
基于Koa(nodejs框架)对json文件进行增删改查的示例代码
Feb 02 #NodeJs
用Electron写个带界面的nodejs爬虫的实现方法
Jan 29 #NodeJs
NVM安装nodejs的方法实用步骤
Jan 16 #NodeJs
nodeJS进程管理器pm2的使用
Jan 09 #NodeJs
NodeJS模块与ES6模块系统语法及注意点详解
Jan 04 #NodeJs
You might like
YII Framework教程之异常处理详解
2016/03/14 PHP
PHP编写daemon process 实例详解
2016/11/13 PHP
YII分模块加载路由的实现方法
2018/10/01 PHP
js jquery数组介绍
2012/07/15 Javascript
jquery阻止冒泡事件使用模拟事件
2013/09/06 Javascript
网站内容禁止复制和粘贴、另存为的js代码
2014/02/26 Javascript
jQuery+PHP打造滑动开关效果
2014/12/16 Javascript
理解Javascript的动态语言特性
2015/06/17 Javascript
jquery如何获取元素的滚动条高度等实现代码
2015/10/19 Javascript
JS触发服务器控件的单击事件(详解)
2016/08/06 Javascript
jquery实现文本框的禁用和启用
2016/12/07 Javascript
vue3.0 CLI - 3.2 路由的初级使用教程
2018/09/20 Javascript
JS/jQuery实现简单的开关灯效果【案例】
2019/02/19 jQuery
Vue 处理表单input单行文本框的实例代码
2019/05/09 Javascript
详解jQuery如何实现模糊搜索
2019/05/10 jQuery
深入了解js原型模式
2019/05/30 Javascript
vue实现随机验证码功能(完整代码)
2019/12/10 Javascript
nuxt+axios实现打包后动态修改请求地址的方法
2020/04/22 Javascript
ES6使用新特性Proxy实现的数据绑定功能实例
2020/05/11 Javascript
Node.js 深度调试方法解析
2020/07/28 Javascript
谈谈python中GUI的选择
2018/03/01 Python
python3使用matplotlib绘制散点图
2019/03/19 Python
python日志logging模块使用方法分析
2019/05/23 Python
pandas数据筛选和csv操作的实现方法
2019/07/02 Python
pycharm设置鼠标悬停查看方法设置
2019/07/29 Python
python利用proxybroker构建爬虫免费IP代理池的实现
2021/02/21 Python
HomeAway澳大利亚:预订你的度假屋,公寓、度假村、别墅等
2019/02/20 全球购物
介绍一下RMI的基本概念
2016/12/17 面试题
yy结婚证婚词
2014/01/10 职场文书
小学优秀班干部事迹材料
2014/05/25 职场文书
关于读书的演讲稿300字
2014/08/27 职场文书
二人合伙经营协议书
2014/09/13 职场文书
公司离职证明标准范本
2014/10/05 职场文书
2016高考冲刺决心书
2015/09/23 职场文书
广告策划的实习心得体会总结!
2019/07/22 职场文书
vue中利用mqtt服务端实现即时通讯的步骤记录
2021/07/01 Vue.js