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 相关文章推荐
快速解决jquery.touchSwipe左右滑动和垂直滚动条冲突
Apr 15 Javascript
JavaScript登录验证码的实现
Oct 27 Javascript
Kendo Grid editing 自定义验证报错提示的解决方法
Nov 18 Javascript
JavaScript中return用法示例
Nov 29 Javascript
深入理解Angularjs中$http.post与$.post
May 19 Javascript
jQuery实现的文字逐行向上间歇滚动效果示例
Sep 06 jQuery
laydate日历控件使用方法详解
Nov 20 Javascript
node 使用 async 控制并发的方法
May 07 Javascript
对angularJs中$sce服务安全显示html文本的实例
Sep 30 Javascript
Vue-CLI 3.X 部署项目至生产服务器的方法
Mar 22 Javascript
详谈Object.defineProperty 及实现数据双向绑定
Jul 18 Javascript
vue项目两种方式实现竖向表格的思路分析
Apr 28 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
全国FM电台频率大全 - 25 云南省
2020/03/11 无线电
php foreach 使用&(与运算符)引用赋值要注意的问题
2010/02/16 PHP
PHP面向对象之旅:深入理解static变量与方法
2014/01/06 PHP
最常用的8款PHP调试工具
2014/07/06 PHP
PHP保存带BOM文件的方法
2015/02/12 PHP
php的api数据接口书写实例(推荐)
2016/09/22 PHP
thinkPHP框架中layer.js的封装与使用方法示例
2019/01/18 PHP
jQuery each()方法的使用方法
2010/03/18 Javascript
javascript全局变量封装模块实现代码
2012/11/28 Javascript
javascript之典型高阶函数应用介绍
2013/01/10 Javascript
Node.js 服务器端应用开发框架 -- Hapi.js
2014/07/29 Javascript
每天一篇javascript学习小结(面向对象编程)
2015/11/20 Javascript
jquery做个日期选择适用于手机端示例
2017/01/10 Javascript
AngularJS Select(选择框)使用详解
2017/01/18 Javascript
vue封装第三方插件并发布到npm的方法
2017/09/25 Javascript
vue.js 嵌套循环、if判断、动态删除的实例
2018/03/07 Javascript
node实现分片下载的示例代码
2018/10/17 Javascript
30分钟用Node.js构建一个API服务器的步骤详解
2019/05/24 Javascript
微信小程序实现手势滑动卡片效果
2019/08/26 Javascript
JavaScript实现移动端带transition动画的轮播效果
2020/03/24 Javascript
JavaScript 获取滚动条位置并将页面滑动到锚点
2021/02/08 Javascript
python通过文件头判断文件类型
2015/10/30 Python
Python实现批量更换指定目录下文件扩展名的方法
2016/09/19 Python
Python中enumerate函数代码解析
2017/10/31 Python
Python3实现的字典、列表和json对象互转功能示例
2018/05/22 Python
分享vim python缩进等一些配置
2018/07/02 Python
python matplotlib画盒图、子图解决坐标轴标签重叠的问题
2020/01/19 Python
使用python从三个角度解决josephus问题的方法
2020/03/27 Python
python dict乱码如何解决
2020/06/07 Python
Python调用OpenCV实现图像平滑代码实例
2020/06/19 Python
python中常用的数据结构介绍
2021/01/12 Python
出国留学计划书
2014/04/27 职场文书
演讲稿祖国在我心中
2014/05/04 职场文书
艺术学院毕业生自荐信
2014/07/05 职场文书
前端监听websocket消息并实时弹出(实例代码)
2021/11/27 Javascript
Mysql中有关Datetime和Timestamp的使用总结
2021/12/06 MySQL