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使用mysql模块之获得更新和删除影响的行数的方法
Mar 18 NodeJs
nodejs开发环境配置与使用
Nov 17 NodeJs
用nodejs的实现原理和搭建服务器(动态)
Aug 10 NodeJs
Nodejs进阶:express+session实现简易登录身份认证
Apr 24 NodeJs
详解nodeJS之路径PATH模块
May 31 NodeJs
Nodejs 复制文件/文件夹的方法
Aug 24 NodeJs
nodejs判断文件、文件夹是否存在及删除的方法
Nov 10 NodeJs
用Electron写个带界面的nodejs爬虫的实现方法
Jan 29 NodeJs
nodejs实现用户登录路由功能
May 22 NodeJs
nodejs中实现修改用户路由功能
May 24 NodeJs
nodejs log4js 使用详解
May 31 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
Eclipse中php插件安装及Xdebug配置的使用详解
2013/04/25 PHP
PHP中array_merge和array相加的区别分析
2013/06/17 PHP
PHP处理SQL脚本文件导入到MySQL的代码实例
2014/03/17 PHP
Linux下编译redis和phpredis的方法
2016/04/07 PHP
基于PHP制作验证码
2016/10/12 PHP
PHP常见数组排序方法小结
2018/08/20 PHP
PHP文件打开关闭及读写操作示例解析
2020/08/06 PHP
js获取class的所有元素
2013/03/28 Javascript
JS中的prototype与面向对象的实例讲解
2013/05/22 Javascript
什么是 AngularJS?AngularJS简介
2014/12/06 Javascript
js图片上传前预览功能(兼容所有浏览器)
2016/08/24 Javascript
Javascript学习之谈谈JS的全局变量跟局部变量(推荐)
2016/08/28 Javascript
AngularJS extend用法详解及实例代码
2016/11/15 Javascript
JavaScript实现数组降维详解
2017/01/05 Javascript
Bootstrap 3 进度条的实现
2017/02/22 Javascript
jQuery控制元素隐藏和显示
2017/03/03 Javascript
jQuery事件_动力节点Java学院整理
2017/07/05 jQuery
AugularJS从入门到实践(必看篇)
2017/07/10 Javascript
详解vue2.0 使用动态组件实现 Tab 标签页切换效果(vue-cli)
2017/08/30 Javascript
浅谈express 中间件机制及实现原理
2017/08/31 Javascript
jquery动态添加以及遍历option并获取特定样式名称的option方法
2018/01/29 jQuery
浅谈mvvm-simple双向绑定简单实现
2018/04/18 Javascript
实例讲解Vue.js中router传参
2018/04/22 Javascript
一步一步实现Vue的响应式(对象观测)
2019/09/02 Javascript
js实现鼠标点击飘爱心效果
2020/08/19 Javascript
10分钟学会js处理json的常用方法
2020/12/06 Javascript
[09:37]2018DOTA2国际邀请赛寻真——不懈追梦的Team Serenity
2018/08/13 DOTA
[01:03:03]VP vs Mineski 2018国际邀请赛淘汰赛BO3 第一场 8.22
2018/08/23 DOTA
TensorFlow模型保存和提取的方法
2018/03/08 Python
在Python中使用defaultdict初始化字典以及应用方法
2018/10/31 Python
Python warning警告出现的原因及忽略方法
2020/01/31 Python
Python如何优雅删除字符列表空字符及None元素
2020/06/25 Python
Python爬虫逆向分析某云音乐加密参数的实例分析
2020/12/04 Python
英国在线电子和小工具商店:TecoBuy
2018/10/06 全球购物
运动会入场词
2015/07/18 职场文书
2016年中学植树节活动总结
2016/03/16 职场文书