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学习笔记之Stream模块
Jan 13 NodeJs
使用DNode实现php和nodejs之间通信的简单实例
Jul 06 NodeJs
NodeJS整合银联网关支付(DEMO)
Nov 09 NodeJs
Nodejs基于LRU算法实现的缓存处理操作示例
Mar 17 NodeJs
nodejs项目windows下开机自启动的方法
Nov 22 NodeJs
nodejs使用http模块发送get与post请求的方法示例
Jan 08 NodeJs
NodeJS实现不可逆加密与密码密文保存的方法
Mar 16 NodeJs
详解webpack打包nodejs项目(前端代码)
Sep 19 NodeJs
详解nodejs http请求相关总结
Mar 31 NodeJs
nodejs的安装使用与npm的介绍
Sep 11 NodeJs
Nodejs + sequelize 实现增删改查操作
Nov 07 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图片处理类 phpThumb参数用法介绍
2012/03/11 PHP
php实现websocket实时消息推送
2018/03/30 PHP
Javascript 判断Flash是否加载完成的代码
2010/04/12 Javascript
jquery插件制作 提示框插件实现代码
2012/08/17 Javascript
jquery如何根据值设置默认的选中项
2014/03/17 Javascript
jQuery实现回车键(Enter)切换文本框焦点的代码实例
2014/05/05 Javascript
jQuery中document与window以及load与ready 区别详解
2014/12/29 Javascript
JS仿iGoogle自定义首页模块拖拽特效的方法
2015/02/13 Javascript
javascript删除元素节点removeChild()用法实例
2015/05/26 Javascript
JavaScript SHA512&amp;SHA256加密算法详解
2015/08/11 Javascript
javascript中判断json的方法总结
2015/08/27 Javascript
JavaScript类型系统之Object详解
2016/01/07 Javascript
微信小程序自定义模态对话框实例详解
2017/08/16 Javascript
详解在vue-cli项目中使用mockjs(请求数据删除数据)
2017/10/23 Javascript
BootStrap自定义popover,点击区域隐藏功能的实现
2018/01/23 Javascript
vue keep-alive请求数据的方法示例
2018/05/16 Javascript
Vue表单输入绑定的示例代码
2018/11/01 Javascript
基于layui轮播图满屏是高度自适应的解决方法
2019/09/16 Javascript
typescript编写微信小程序创建项目的方法
2021/01/29 Javascript
python获取beautifulphoto随机某图片代码实例
2013/12/18 Python
pandas对指定列进行填充的方法
2018/04/11 Python
django drf框架自带的路由及最简化的视图
2019/09/10 Python
pycharm运行scrapy过程图解
2019/11/22 Python
python实现超市商品销售管理系统
2019/11/22 Python
tensorflow的计算图总结
2020/01/12 Python
Python类中的装饰器在当前类中的声明与调用详解
2020/04/15 Python
Python读写压缩文件的方法
2020/07/30 Python
django前端页面下拉选择框默认值设置方式
2020/08/09 Python
公司中层干部的自我评价分享
2014/03/01 职场文书
农行心得体会
2014/09/02 职场文书
党的群众路线教育实践活动个人对照检查材料(公安)
2014/11/05 职场文书
索赔员岗位职责
2015/02/15 职场文书
2016参观监狱警示教育活动心得体会
2016/01/15 职场文书
《作风建设永远在路上》心得体会
2016/01/21 职场文书
MySQL sql_mode修改不生效的原因及解决
2021/05/07 MySQL
Python实现批量自动整理文件
2022/03/16 Python