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 相关文章推荐
PHPStorm 2020.1 调试 Nodejs的多种方法详解
Sep 17 NodeJs
Nodejs中自定义事件实例
Jun 20 NodeJs
Nodejs中 npm常用命令详解
Jul 04 NodeJs
学习 NodeJS 第八天:Socket 通讯实例
Dec 21 NodeJs
详解nodejs 文本操作模块-fs模块(三)
Dec 22 NodeJs
NodeJS实现客户端js加密
Jan 09 NodeJs
nodeJS(express4.x)+vue(vue-cli)构建前后端分离实例(带跨域)
Jul 05 NodeJs
nodejs对express中next函数的一些理解
Sep 08 NodeJs
Nodejs连接mysql并实现增、删、改、查操作的方法详解
Jan 04 NodeJs
nodejs 使用nodejs-websocket模块实现点对点实时通讯
Nov 28 NodeJs
nodejs中实现修改用户路由功能
May 24 NodeJs
nodejs和react实现即时通讯简易聊天室功能
Aug 21 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
PHP开发实现快递查询功能详解
2019/04/08 PHP
JavaScript 利用Cookie记录用户登录信息
2009/12/08 Javascript
window.onload追加函数使用示例
2014/03/03 Javascript
javascript中var的重要性分析
2015/02/11 Javascript
jQuery中$.each()函数的用法引申实例
2016/05/12 Javascript
移动端界面的适配
2017/01/11 Javascript
js中删除数组中的某一元素实例(无下标时)
2017/02/28 Javascript
用nodeJS搭建本地文件服务器的几种方法小结
2017/03/16 NodeJs
移动端刮刮乐的实现方式(js+HTML5)
2017/03/23 Javascript
nodejs中解决异步嵌套循环和循环嵌套异步的问题
2017/07/12 NodeJs
vue基于mint-ui实现城市选择三级联动
2020/06/30 Javascript
浅谈微信小程序之官方UI框架we-ui使用教程
2018/08/20 Javascript
详解Vue CLI3 多页应用实践和源码设计
2018/08/30 Javascript
6行代码实现微信小程序页面返回顶部效果
2018/12/28 Javascript
layui2.0使用table+laypage实现真分页
2019/07/27 Javascript
JS如何实现网站中PC端和手机端自动识别并跳转对应的代码
2020/01/08 Javascript
vue.js中使用微信扫一扫解决invalid signature问题(完美解决)
2020/04/11 Javascript
vue setInterval 定时器失效的解决方式
2020/07/30 Javascript
jQuery实现带进度条的轮播图
2020/09/13 jQuery
[05:31]干嘛呢兄弟!DOTA2 TI9语音轮盘部分出处
2019/05/14 DOTA
Djang中静态文件配置方法
2015/07/30 Python
Python3.4编程实现简单抓取爬虫功能示例
2017/09/14 Python
python中将字典形式的数据循环插入Excel
2018/01/16 Python
python操作mysql代码总结
2018/06/01 Python
Python使用re模块正则提取字符串中括号内的内容示例
2018/06/01 Python
用python代码将tiff图片存储到jpg的方法
2018/12/04 Python
关于python 跨域处理方式详解
2020/03/28 Python
Python自动化之UnitTest框架实战记录
2020/09/08 Python
详解Java中一维、二维数组在内存中的结构
2021/02/11 Python
基于HTML5的齿轮动画特效
2016/02/29 HTML / CSS
linux面试题参考答案(4)
2014/09/21 面试题
车祸赔偿收入证明
2014/01/09 职场文书
市场开发与营销专业求职信范文
2014/05/01 职场文书
国际贸易专业求职信
2014/06/04 职场文书
2014红色之旅心得体会
2014/10/07 职场文书
Python用any()函数检查字符串中的字母以及如何使用all()函数
2022/04/14 Python