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中的delete介绍
Sep 02 Javascript
深入document.write()与HTML4.01的非成对标签的详解
May 08 Javascript
js 自定义个性下拉选择框示例
Aug 20 Javascript
JS根据年月获得当月天数的实现代码
Jul 03 Javascript
JavaScript入门系列之知识点总结
Mar 24 Javascript
JS Attribute属性操作详解
May 19 Javascript
Jquery揭秘系列:ajax原生js实现详解(推荐)
Jun 08 Javascript
用纯Node.JS弹出Windows系统消息提示框实例(MessageBox)
May 17 Javascript
jQuery NProgress.js加载进度插件的简单使用方法
Jan 31 jQuery
Webpack 4如何动态切割JS注入文件名详解
Jul 09 Javascript
详解用async/await来处理异步
Aug 28 Javascript
Vue项目中如何封装axios(统一管理http请求)
May 02 Vue.js
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
ThinkPHP3.1新特性之动态设置自动完成及自动验证示例代码
2014/06/23 PHP
ThinkPHP中limit()使用方法详解
2016/04/19 PHP
Laravel日志用法详解
2016/10/09 PHP
JavaScript的9个陷阱及评点分析
2008/05/16 Javascript
jQuery右键菜单contextMenu使用实例
2011/09/28 Javascript
javascript 三种方法实现获得和设置以及移除元素属性
2013/03/20 Javascript
动态获取复选框checkbox选中个数的jquery代码
2013/06/25 Javascript
JS实现简单的Canvas画图实例
2013/07/04 Javascript
javascript实现输出指定行数正方形图案的方法
2015/08/03 Javascript
使用jQuery监听DOM元素大小变化
2016/02/24 Javascript
jQuery Mobile开发中日期插件Mobiscroll使用说明
2016/03/02 Javascript
Angular2 多级注入器详解及实例
2016/10/30 Javascript
JS实现图片放大镜插件详解
2017/11/06 Javascript
详解js中的原型,原型对象,原型链
2020/07/16 Javascript
vue 保留两位小数 不能直接用toFixed(2) 的解决
2020/08/07 Javascript
[01:21]DOTA2周边文化主题展 神秘商店火热开售
2017/07/30 DOTA
python 数据加密代码
2008/12/24 Python
100行Python代码实现自动抢火车票(附源码)
2018/01/11 Python
Python下载网络文本数据到本地内存的四种实现方法示例
2018/02/05 Python
python使用turtle库绘制奥运五环
2020/02/24 Python
在Python IDLE 下调用anaconda中的库教程
2020/03/09 Python
基于python检查SSL证书到期情况代码实例
2020/04/04 Python
解决keras加入lambda层时shape的问题
2020/06/11 Python
keras实现多种分类网络的方式
2020/06/11 Python
如何通过命令行进入python
2020/07/06 Python
详解python模块pychartdir安装及导入问题
2020/10/22 Python
突袭HTML5之Javascript API扩展5—其他扩展(应用缓存/服务端消息/桌面通知)
2013/01/31 HTML / CSS
马耳他航空公司官方网站:Air Malta
2019/05/15 全球购物
eHarmony英国:全球领先的认真恋爱约会平台之一
2020/11/16 全球购物
如何让Java程序执行效率更高
2014/06/25 面试题
物流经理自我评价
2013/09/23 职场文书
应聘医学检验人员自荐信
2013/09/27 职场文书
运动会解说词50字
2014/01/18 职场文书
2014年3.15团委活动总结
2014/03/16 职场文书
运动会方阵口号
2014/06/07 职场文书
四十年同学聚会致辞
2015/07/28 职场文书