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的智能提示插件一枚
Feb 18 Javascript
jQuery 获取URL的GET参数值的小例子
Apr 18 Javascript
使用JSON.parse将json字符串转换成json对象的时候会出错
Sep 04 Javascript
js实现每日自动换一张图片的方法
May 04 Javascript
JS实现仿微博可关闭弹出层效果
Sep 21 Javascript
移动手机APP手指滑动切换图片特效附源码下载
Nov 30 Javascript
Bootstrap列表组学习使用
Feb 09 Javascript
Vue无限滑动周选择日期的组件的示例代码
Jul 18 Javascript
vue项目打包部署_nginx代理访问方法详解
Sep 20 Javascript
对vue v-if v-else-if v-else 的简单使用详解
Sep 29 Javascript
Vue3.0结合bootstrap创建多页面应用
May 28 Javascript
微信小程序转发事件实现解析
Oct 22 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经典的给图片加水印程序
2006/12/06 PHP
如何设置mysql允许外网访问
2013/06/04 PHP
thinkphp中ajax与php响应过程详解
2014/12/08 PHP
php单例模式示例分享
2015/02/12 PHP
php+mysql+jquery实现日历签到功能
2017/02/27 PHP
javascript instanceof 与typeof使用说明
2010/01/11 Javascript
JavaScript学习笔记之获取当前目录的实现代码
2010/12/14 Javascript
jQuery实现图片放大预览实现原理及代码
2013/09/12 Javascript
浅谈 jQuery 事件源码定位问题
2014/06/18 Javascript
Javascript遍历Html Table示例(包括内容和属性值)
2014/07/08 Javascript
JavaScript中的Promise使用详解
2015/06/24 Javascript
js限制文本框的输入内容代码分享(3类)
2015/08/20 Javascript
javascript实现省市区三级联动下拉框菜单
2015/11/17 Javascript
JavaScript html5 canvas实现图片上画超链接
2017/10/20 Javascript
js 原生判断内容区域是否滚动到底部的实例代码
2017/11/15 Javascript
基于vue2实现左滑删除功能
2017/11/28 Javascript
Angular中管道操作符(|)的使用方法
2017/12/15 Javascript
vue.js实现点击后动态添加class及删除同级class的实现代码
2018/04/04 Javascript
微信小程序http连接访问解决方案的示例
2018/11/05 Javascript
Python入门篇之正则表达式
2014/10/20 Python
python访问类中docstring注释的实现方法
2015/05/04 Python
Python计算三角函数之asin()方法的使用
2015/05/15 Python
Scrapy框架爬取Boss直聘网Python职位信息的源码
2019/02/22 Python
Python3.5 Pandas模块缺失值处理和层次索引实例详解
2019/04/23 Python
python re模块匹配贪婪和非贪婪模式详解
2020/02/11 Python
Python实现敏感词过滤的4种方法
2020/09/12 Python
如何通过python计算圆周率PI
2020/11/11 Python
俄罗斯达美乐比萨外送服务:Domino’s Pizza
2020/12/18 全球购物
普通PHP程序员笔试题
2016/01/01 面试题
区优秀教师事迹材料
2014/02/10 职场文书
2014年幼儿园元旦活动方案
2014/02/13 职场文书
学生安全教育材料
2014/02/14 职场文书
房屋出售协议书
2014/04/10 职场文书
Python+Appium新手教程
2021/04/17 Python
Java 语言中Object 类和System 类详解
2021/07/07 Java/Android
Python 装饰器(decorator)常用的创建方式及解析
2022/04/24 Python