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 相关文章推荐
Js实现双击鼠标自动滚动屏幕的示例代码
Dec 14 Javascript
SpringMVC返回json数据的三种方式
Dec 10 Javascript
jQuery表单对象属性过滤选择器实例详解
Sep 13 Javascript
angular框架实现全选与单选chekbox的自定义
Jul 06 Javascript
JavaScript面向对象精要(上部)
Sep 12 Javascript
JavaScript实现单击网页任意位置打开新窗口与关闭窗口的方法
Sep 21 Javascript
使用JQuery实现图片轮播效果的实例(推荐)
Oct 24 jQuery
使用Vue动态生成form表单的实例代码
Apr 26 Javascript
微信小程序实现倒计时补零功能
Jul 09 Javascript
微信小程序实现单个卡片左滑显示按钮并防止上下滑动干扰功能
Dec 06 Javascript
vue addRoutes路由动态加载操作
Aug 04 Javascript
JS中队列和双端队列实现及应用详解
Sep 29 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在字符串中查找指定字符串并删除的代码
2008/10/02 PHP
PHP文件大小格式化函数合集
2014/03/10 PHP
php自动识别文件编码并转换为UTF-8的方法
2014/06/12 PHP
php单例模式实现方法分析
2015/03/14 PHP
Codeigniter的dom类用法实例
2015/06/26 PHP
PHP封装的完整分页类示例
2018/08/21 PHP
php curl发送请求实例方法
2019/08/01 PHP
JavaScript 验证浏览器是否支持javascript的方法小结
2009/05/17 Javascript
一个javascript图片阅览组件
2010/11/09 Javascript
JS控制文本框textarea输入字数限制的方法
2013/06/17 Javascript
jQuery对Select的操作大集合(收藏)
2013/12/28 Javascript
JavaScript控制图片加载完成后调用回调函数的方法
2015/03/20 Javascript
微信公众号开发 实现点击返回按钮就返回到聊天界面
2016/12/15 Javascript
js 转义字符及URI编码详解
2017/02/28 Javascript
Vue 实用分页paging实例代码
2017/04/12 Javascript
微信小程序页面开发注意事项整理
2017/05/18 Javascript
JS实现中文汉字按拼音排序的方法
2017/10/09 Javascript
Vue.js最佳实践(五招助你成为vuejs大师)
2018/05/04 Javascript
在vue项目中正确使用iconfont的方法
2018/09/28 Javascript
JavaScript中callee和caller的区别与用法实例分析
2019/06/28 Javascript
[38:44]DOTA2上海特级锦标赛A组小组赛#2 Secret VS CDEC第二局
2016/02/25 DOTA
python保存字符串到文件的方法
2015/07/01 Python
获取Django项目的全部url方法详解
2017/10/26 Python
python绘制漏斗图步骤详解
2019/03/04 Python
python脚本实现mp4中的音频提取并保存在原目录
2020/02/27 Python
HTML5 Canvas基本线条绘制的实例教程
2016/03/17 HTML / CSS
AmazeUI 平滑滚动效果的示例代码
2020/08/20 HTML / CSS
美国在线购买和出售礼品卡网站:EJ Gift Cards
2019/06/09 全球购物
初入社会应届生求职信
2013/11/18 职场文书
领导失职检讨书
2014/02/24 职场文书
安全生产标语
2014/06/06 职场文书
人力资源管理毕业求职信
2014/08/05 职场文书
国家领导干部党的群众路线教育实践活动批评与自我批评材料
2014/09/23 职场文书
婚礼父母答谢词
2015/01/04 职场文书
2016年寒假社会实践活动总结
2015/10/10 职场文书
社区干部培训心得体会
2016/01/06 职场文书