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 相关文章推荐
JavaScrip实现PHP print_r的数功能(三种方法)
Nov 12 Javascript
Get中文乱码IE浏览器Get中文乱码解决方案
Dec 26 Javascript
原生js和jquery中有关透明度设置的相关问题
Jan 08 Javascript
理解javascript中的原型和原型链
Jul 30 Javascript
js 判断所选时间(或者当前时间)是否在某一时间段的实现代码
Sep 05 Javascript
bootstrap和jQuery.Gantt的css冲突 如何解决
May 29 Javascript
获取input标签的所有属性的方法
Jun 28 Javascript
bootstrap select下拉搜索插件使用方法详解
Nov 23 Javascript
解决Linux无法正常安装与卸载Node.js的方法
Jan 19 Javascript
在vue中解决提示警告 for循环报错的方法
Sep 28 Javascript
js for终止循环 跳出多层循环
Oct 04 Javascript
解决Layui数据表格显示无数据提示的问题
Nov 14 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的array_multisort()使用方法介绍
2012/05/16 PHP
用Simple Excel导出xls实现方法
2012/12/06 PHP
laravel入门知识点整理
2020/09/15 PHP
JavaScript 入门·JavaScript 具有全范围的运算符
2007/10/01 Javascript
JQuery 学习笔记 选择器之六
2009/07/23 Javascript
javascript Object与Function使用
2010/01/11 Javascript
JAVASCRIPT函数作用域和提前声明 分享
2013/08/22 Javascript
JavaScript中的连字符详解
2013/11/28 Javascript
jQuery实现左右切换焦点图
2015/04/03 Javascript
js重写方法的简单实现
2016/07/10 Javascript
springMVC结合AjaxForm上传文件
2016/07/12 Javascript
浅谈JavaScript中面向对象的的深拷贝和浅拷贝
2016/08/01 Javascript
BootStrap无限级分类(无限极分类封装版)
2016/08/26 Javascript
微信小程序 弹窗自定义实例代码
2017/03/08 Javascript
解决BootStrap Fileinput手机图片上传显示旋转问题
2017/06/01 Javascript
Vue项目中设置背景图片方法
2018/02/21 Javascript
JS实现盒子跟着鼠标移动及键盘方向键控制盒子移动效果示例
2019/01/29 Javascript
node.JS路径解析之PATH模块使用方法详解
2020/02/06 Javascript
echarts.js 动态生成多个图表 使用vue封装组件操作
2020/07/19 Javascript
前端 javascript 实现文件下载的示例
2020/11/24 Javascript
[01:46]2018完美盛典章节片——坚守
2018/12/17 DOTA
详解Python中的动态属性和特性
2018/04/07 Python
python读取大文件越来越慢的原因与解决
2019/08/08 Python
Python中__repr__和__str__区别详解
2019/11/07 Python
Python基于time模块表示时间常用方法
2020/06/18 Python
python3获取控制台输入的数据的具体实例
2020/08/16 Python
通过代码实例了解Python3编程技巧
2020/10/13 Python
CSMA/CD介质访问控制协议
2015/11/17 面试题
计算机专业学生求职信分享
2013/12/15 职场文书
数学与统计学院学生个人职业生涯规划书
2014/02/10 职场文书
2014年会策划方案
2014/05/11 职场文书
政治学求职信
2014/06/03 职场文书
目标责任书格式
2014/07/28 职场文书
对照检查剖析材料
2014/09/30 职场文书
三八妇女节主持词
2015/07/04 职场文书
幼儿园体操比赛口号
2015/12/25 职场文书