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中的非阻塞方法介绍
Jun 05 NodeJs
nodejs获取本机内网和外网ip地址的实现代码
Jun 01 NodeJs
nodejs 提示‘xxx’ 不是内部或外部命令解决方法
Nov 20 NodeJs
Nodejs进阶:如何将图片转成datauri嵌入到网页中去实例
Nov 21 NodeJs
nodejs操作mongodb的增删改查功能实例
Nov 09 NodeJs
nodejs实现OAuth2.0授权服务认证
Dec 27 NodeJs
nodejs图片处理工具gm用法小结
Dec 12 NodeJs
NodeJs操作MongoDB教程之分页功能以及常见问题
Apr 09 NodeJs
nodejs中实现用户注册路由功能
May 20 NodeJs
监控Nodejs的性能实例代码
Jul 02 NodeJs
NodeJs实现简易WEB上传下载服务器
Aug 10 NodeJs
nodeJS与MySQL实现分页数据以及倒序数据
Jun 05 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
wiki-shan写的php在线加密的解密程序
2008/09/07 PHP
php 数组动态添加实现代码(最土团购系统的价格排序)
2011/12/30 PHP
PHP中文分词 自动获取关键词介绍
2012/11/13 PHP
PHP图片等比例缩放生成缩略图函数分享
2014/06/10 PHP
PHP常用的小程序代码段
2015/11/14 PHP
超详细的php用户注册页面填写信息完整实例(附源码)
2015/11/17 PHP
PHP给文字内容中的关键字进行套红处理
2016/04/12 PHP
php批量删除操作代码分享
2017/02/26 PHP
理解Javascript_13_执行模型详解
2010/10/20 Javascript
NodeJS学习笔记之MongoDB模块
2015/01/13 NodeJs
js实现可控制左右方向的无缝滚动效果
2016/05/29 Javascript
jQuery筛选数组之grep、each、inArray、map的用法及遍历json对象
2016/06/20 Javascript
vue实现的上传图片到数据库并显示到页面功能示例
2018/03/17 Javascript
微信小程序实现图片上传放大预览删除代码
2020/06/28 Javascript
微信小程序云开发实现云数据库读写权限
2019/05/17 Javascript
JS实现继承的几种常用方式示例
2019/06/22 Javascript
浅析Vue 中的 render 函数
2020/02/28 Javascript
详解ES6实现类的私有变量的几种写法
2021/02/10 Javascript
[04:40]DOTA2-DPC中国联赛1月26日Recap集锦
2021/03/11 DOTA
Python实现的Google IP 可用性检测脚本
2015/04/23 Python
sublime python3 输入换行不结束的方法
2018/04/19 Python
python中for循环输出列表索引与对应的值方法
2018/11/07 Python
python3+PyQt5 自定义窗口部件--使用窗口部件样式表的方法
2019/06/26 Python
Django REST framework 单元测试实例解析
2019/11/07 Python
python 怎样进行内存管理
2020/11/10 Python
用CSS3实现瀑布流布局的示例代码
2017/11/10 HTML / CSS
canvas学习笔记之绘制简单路径
2019/01/28 HTML / CSS
利用HTML5的新特点实现图片文件异步上传
2014/05/29 HTML / CSS
基于HTML5+Webkit实现树叶飘落动画
2017/12/28 HTML / CSS
体育教育专业毕业生自荐信
2013/11/15 职场文书
个人自我鉴定写法
2013/11/30 职场文书
木工主管岗位职责
2013/12/08 职场文书
致1500米运动员广播稿
2014/02/07 职场文书
《分一分》教学反思
2014/04/13 职场文书
继承权公证书范本
2015/01/23 职场文书
Python趣味爬虫之用Python实现智慧校园一键评教
2021/05/28 Python