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 联动日历实现代码
May 31 Javascript
JQquery的一些使用心得分享
Aug 01 Javascript
jQuery函数map()和each()介绍及异同点分析
Nov 08 Javascript
jquery插件validation实现验证身份证号等
Jun 04 Javascript
Jquery实现顶部弹出框特效
Aug 08 Javascript
谈谈我对JavaScript中typeof和instanceof的深入理解
Dec 25 Javascript
基于jquery实现智能提示控件intellSeach.js
Mar 17 Javascript
AngularJS 中的事件详解
Jul 28 Javascript
微信公众号开发 自定义菜单跳转页面并获取用户信息实例详解
Dec 08 Javascript
jquery中关于bind()方法的使用技巧分享
Mar 30 jQuery
移动端图片上传旋转、压缩问题的方法
Oct 16 Javascript
深入理解webpack process.env.NODE_ENV配置
Feb 23 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面向对象全攻略 (十四) php5接口技术
2009/09/30 PHP
php抽象方法和抽象类实例分析
2016/12/07 PHP
PHP实现关键字搜索后描红功能示例
2019/07/03 PHP
PHP调用接口API封装的例子
2019/10/11 PHP
js判断页面中是否有指定控件的简单实例
2014/03/04 Javascript
js使用removeChild方法动态删除div元素
2014/08/01 Javascript
javascript顺序加载图片的方法
2015/07/18 Javascript
详解ElementUI之表单验证、数据绑定、路由跳转
2017/06/21 Javascript
vuejs router history 配置到iis的方法
2018/09/20 Javascript
详解@angular/cli 改变默认启动端口两种方式
2018/11/29 Javascript
vue2之简易的pc端短信验证码的问题及处理方法
2019/06/03 Javascript
Vue watch响应数据实现方法解析
2020/07/10 Javascript
python和pyqt实现360的CLable控件
2014/02/21 Python
Python实现提取谷歌音乐搜索结果的方法
2015/07/10 Python
Python实现登录接口的示例代码
2017/07/21 Python
python使用ddt过程中遇到的问题及解决方案【推荐】
2018/10/29 Python
详解用python写网络爬虫-爬取新浪微博评论
2019/05/10 Python
python从入门到精通 windows安装python图文教程
2019/05/18 Python
10行Python代码计算汽车数量的实现方法
2019/10/23 Python
Python3.7基于hashlib和Crypto实现加签验签功能(实例代码)
2019/12/04 Python
Python Numpy库常见用法入门教程
2020/01/16 Python
使用Python获取当前工作目录和执行命令的位置
2020/03/09 Python
CSS3制作ajax loader icon实现思路及代码
2013/08/25 HTML / CSS
移动端html5模拟长按事件的实现方法
2018/09/30 HTML / CSS
东方电视购物:东方CJ
2016/10/12 全球购物
Europcar葡萄牙:葡萄牙汽车和货车租赁
2017/10/13 全球购物
有机童装:Toby Tiger
2018/05/23 全球购物
Made in Design英国:设计家具、照明、家庭装饰和花园家具
2019/09/24 全球购物
巴西最大的巴士票务门户:Quero Passagem
2020/11/21 全球购物
上海奥佳笔试题面试题
2016/11/16 面试题
EJB的激活机制
2013/10/25 面试题
质量承诺书格式
2014/05/20 职场文书
文明寝室标语
2014/06/13 职场文书
交通事故调解协议书
2015/05/20 职场文书
查看nginx配置文件路径和资源文件路径的方法
2021/03/31 Servers
js 数组 fill() 填充方法
2021/11/02 Javascript