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简单实现中英文翻译
May 04 NodeJs
你一定会收藏的Nodejs代码片段
Feb 04 NodeJs
Nodejs全局安装和本地安装的不同之处
Jul 04 NodeJs
详解nodejs 文本操作模块-fs模块(四)
Dec 22 NodeJs
浅谈Nodejs中的作用域问题
Dec 26 NodeJs
Ajax异步文件上传与NodeJS express服务端处理
Apr 01 NodeJs
NodeJS、NPM安装配置步骤(windows版本) 以及环境变量详解
May 13 NodeJs
NodeJS自定义模块写法(详解)
Jun 27 NodeJs
nodeJs实现基于连接池连接mysql的方法示例
Feb 10 NodeJs
nodejs更改项目端口号的方法
May 13 NodeJs
Nodejs Express 通过log4js写日志到Logstash(ELK)
Aug 30 NodeJs
NodeJS 实现多语言的示例代码
Sep 11 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
通过文字传递创建的图形按钮
2006/10/09 PHP
php date()日期时间函数详解
2010/05/16 PHP
PHP隐形一句话后门,和ThinkPHP框架加密码程序(base64_decode)
2011/11/02 PHP
php实现文件下载更能介绍
2012/11/23 PHP
PHP 字符串长度判断效率更高的方法
2014/03/02 PHP
PHP网页游戏学习之Xnova(ogame)源码解读(十一)
2014/06/25 PHP
PHP 传输会话curl函数的实例详解
2017/09/12 PHP
PHP实现根据数组某个键值大小进行排序的方法
2018/03/13 PHP
Laravel模糊查询区分大小写的实例
2019/09/29 PHP
Javascript的IE和Firefox兼容性汇编(zz)
2007/02/02 Javascript
jquery中输入验证中一个不错的效果
2010/08/21 Javascript
jquery 获取表单元素里面的值示例代码
2013/07/28 Javascript
javascript自定义右键弹出菜单实现方法
2015/05/25 Javascript
javascript实现的多个层切换效果通用函数实例
2015/07/06 Javascript
原生js配合cookie制作保存路径的拖拽
2015/12/29 Javascript
JavaScript队列、优先队列与循环队列
2016/11/14 Javascript
简单实现jQuery手风琴效果
2017/08/18 jQuery
nodejs中密码加密处理操作详解
2018/03/20 NodeJs
vue.extend实现alert模态框弹窗组件
2018/04/28 Javascript
vue2.0结合Element-ui实战案例
2019/03/06 Javascript
js实现for循环跳过undefined值示例
2019/07/02 Javascript
JavaScript简单编程实例学习
2020/02/14 Javascript
JS中FormData类实现文件上传
2020/03/27 Javascript
js实现贪吃蛇游戏 canvas绘制地图
2020/09/09 Javascript
python操作gmail实例
2015/01/14 Python
使用Python编写简单的端口扫描器的实例分享
2015/12/18 Python
深入理解python函数递归和生成器
2016/06/06 Python
浅谈flask中的before_request与after_request
2018/01/20 Python
Python内存管理实例分析
2019/07/10 Python
Python爬虫之爬取淘女郎照片示例详解
2020/07/28 Python
python os.rename实例用法详解
2020/12/06 Python
微软台湾官方网站:Microsoft台湾
2018/08/15 全球购物
美国领先的男士和女士内衣购物网站:Freshpair
2019/02/25 全球购物
大学生个人简历中的自我评价
2013/12/27 职场文书
2014新年元旦活动策划方案
2014/02/18 职场文书
JS前端轻量fabric.js系列物体基类
2022/08/05 Javascript