Node.js实现mysql连接池使用事务自动回收连接的方法示例


Posted in Javascript onFebruary 03, 2018

本文实例讲述了Node.js实现mysql连接池使用事务自动回收连接的方法。分享给大家供大家参考,具体如下:

var mysql = require('mysql'),
  Connection = require('mysql/lib/Connection.js');
var pool = mysql.createPool({
  host: '127.0.0.1',
  database: 'myDB',
  port: 3306,
  user: 'root',
  password: 'root',
  debug: false,
  connectionLimit: 3
});
var execPool = function() {
  pool.getConnection(function(err, conn) {
    transAutoRelease(conn);
    conn.beginTransaction(function(err) {
      if (err) throw err;
      conn.query("INSERT INTO test(id,name,date,test) values(1,'123',now(),1)",
        function(err, ret) {
          if (err) {
            console.error(err);
            conn.rollback(function() {});
          } else {
            console.log(ret);
            conn.query('UPDATE test set id=12321312 where id=1', function(err, ret) {
              if (err) {
                console.error(err);
                conn.rollback(function() {
                });
              } else {
                conn.commit(function() {
                  console.log('success' + JSON.stringify(ret));
                });
              }
            });
          }
        });
    });
  });
}
function after(fn, cb) { return function() {
    fn.apply(this, arguments);
    cb();
  }
}
function transAutoRelease(conn) {
  if (conn.commit == Connection.prototype.commit)
    conn.commit = after(conn.commit, release);
  if (conn.rollback == Connection.prototype.rollback)
    conn.rollback = after(conn.rollback, release);
  function release() {
    if (conn) {
      conn.release();
    }
  }
}
var intervalStartProcess = function() {
  setInterval(function() {
    execPool();
  }, 1000);
}
for (var i = 5 - 1; i >= 0; i--) {
  intervalStartProcess();
}

希望本文所述对大家nodejs程序设计有所帮助。

Javascript 相关文章推荐
JavaScript Event学习第七章 事件属性
Feb 07 Javascript
window.navigate 与 window.location.href 的使用区别介绍
Sep 21 Javascript
Javascript Ajax异步读取RSS文档具体实现
Dec 12 Javascript
JS和JQUERY获取页面大小,滚动条位置,元素位置(示例代码)
Dec 14 Javascript
jQuery实现点击后高亮背景固定显示的菜单效果【附demo源码下载】
Sep 21 Javascript
JavaScript数组去重的几种方法效率测试
Oct 23 Javascript
小程序如何构建骨架屏
May 29 Javascript
解决Vue中 父子传值 数据丢失问题
Aug 27 Javascript
前端vue-cli项目中使用img图片和background背景图的几种方法
Nov 13 Javascript
深入浅析vue全局环境变量和模式
Apr 28 Javascript
VUE Elemen-ui之穿梭框使用方法详解
Jan 19 Javascript
js定时器出现第一次延迟的原因及解决方法
Jan 04 Javascript
js删除数组中的元素delete和splice的区别详解
Feb 03 #Javascript
JS删除数组里的某个元素方法
Feb 03 #Javascript
jQuery niceScroll滚动条错位问题的解决方法
Feb 03 #jQuery
JS实现百度搜索接口及链接功能实例代码
Feb 02 #Javascript
原生JS实现的双色球功能示例
Feb 02 #Javascript
jQuery实现的下雪动画效果示例【附源码下载】
Feb 02 #jQuery
微信小程序实现列表下拉刷新上拉加载
Jul 29 #Javascript
You might like
php设计模式之观察者模式的应用详解
2013/05/21 PHP
php比较两个绝对时间的大小
2014/01/31 PHP
PHP生成图片验证码、点击切换实例
2014/06/25 PHP
PHP自定义多进制的方法
2016/11/03 PHP
laravel自定义分页效果
2017/07/23 PHP
PHP使用Nginx实现反向代理
2017/09/20 PHP
PHP性能测试工具xhprof安装与使用方法详解
2018/04/29 PHP
ThinkPHP6.0如何利用自定义验证规则规范的实现登陆
2020/12/16 PHP
Javascript 跨域访问解决方案
2009/02/14 Javascript
jQuery动画效果-fadeIn fadeOut淡入浅出示例代码
2013/08/28 Javascript
jquery实现拖拽调整Div大小
2015/01/30 Javascript
javascript中Date()函数在各浏览器中的显示效果
2015/06/18 Javascript
使用vue编写一个点击数字计时小游戏
2016/08/31 Javascript
jQuery.parseHTML() 函数详解
2017/01/09 Javascript
Vue.js 点击按钮显示/隐藏内容的实例代码
2018/02/08 Javascript
vue中img src 动态加载本地json的图片路径写法
2019/04/25 Javascript
Ajax请求时无法重定向的问题解决代码详解
2019/06/21 Javascript
Python2.x中文乱码问题解决方法
2015/06/02 Python
[原创]使用豆瓣提供的国内pypi源
2017/07/02 Python
Python内置函数—vars的具体使用方法
2017/12/04 Python
python爬虫之xpath的基本使用详解
2018/04/18 Python
基于Numpy.convolve使用Python实现滑动平均滤波的思路详解
2019/05/16 Python
python调用matplotlib模块绘制柱状图
2019/10/18 Python
python TK库简单应用(实时显示子进程输出)
2019/10/29 Python
python DataFrame转dict字典过程详解
2019/12/26 Python
Python安装whl文件过程图解
2020/02/18 Python
Windows下pycharm安装第三方库失败(通用解决方案)
2020/09/17 Python
多个版本的python共存时使用pip的正确做法
2020/10/26 Python
应届毕业生个人自荐信范文
2013/11/30 职场文书
职工运动会感言
2014/02/07 职场文书
中班中秋节活动反思
2014/02/18 职场文书
房屋登记授权委托书范本
2014/10/09 职场文书
2014年后勤管理工作总结
2014/12/01 职场文书
优秀共产党员事迹材料
2014/12/18 职场文书
深入理解Vue的数据响应式
2021/05/15 Vue.js
SpringBoot SpringEL表达式的使用
2021/07/25 Java/Android