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 相关文章推荐
firefox下对ajax的onreadystatechange的支持情况分析
Dec 14 Javascript
javascript showModalDialog模态对话框使用说明
Dec 31 Javascript
使用js检测浏览器是否支持html5中的video标签的方法
Mar 12 Javascript
JavaScript定义类和对象的方法
Nov 26 Javascript
js仿百度登录页实现拖动窗口效果
Mar 11 Javascript
JS中使用mailto实现将用户在网页中输入的内容传递到本地邮件客户端
Oct 08 Javascript
Vue-router路由判断页面未登录跳转到登录页面的实例
Oct 26 Javascript
Vue+element-ui 实现表格的分页功能示例
Aug 18 Javascript
浅谈Angular 观察者模式理解
Nov 01 Javascript
layer弹出框确定前验证:弹出消息框的方法(弹出两个layer)
Sep 21 Javascript
vue+elementUi 实现密码显示/隐藏+小图标变化功能
Jan 18 Javascript
jQuery实现简易聊天框
Feb 08 jQuery
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 google或baidu分页代码
2009/11/26 PHP
PHP5.5.15+Apache2.4.10+MySQL5.6.20配置方法分享
2016/05/06 PHP
PHP中Cookie的使用详解(简单易懂)
2017/04/28 PHP
php删除一个路径下的所有文件夹和文件的方法
2018/02/07 PHP
JS 继承实例分析
2008/11/04 Javascript
Javascript 布尔型分析
2008/12/22 Javascript
ExtJS 2.0实用简明教程 之ExtJS版的Hello
2009/04/29 Javascript
跨浏览器开发经验总结(三)   警惕“IE依赖综合症”
2010/05/13 Javascript
JS判断页面加载状态以及添加遮罩和缓冲动画的代码
2012/10/11 Javascript
jquery入门必备的基本认识及实例(整理)
2013/06/24 Javascript
瀑布流布局代码一例
2014/04/11 Javascript
JavaScript对数组进行随机重排的方法
2015/07/22 Javascript
文字垂直滚动之javascript代码
2015/07/29 Javascript
简要了解jQuery移动web开发的响应式布局设计
2015/12/04 Javascript
jquery 属性选择器(匹配具有指定属性的元素)
2016/09/06 Javascript
jQuery实现ajax无刷新分页页码控件
2017/02/28 Javascript
three.js 入门案例详解
2018/01/23 Javascript
Three.js中矩阵和向量的使用教程
2019/03/19 Javascript
react实现同页面三级跳转路由布局
2019/09/26 Javascript
[02:58]献给西雅图的情书_高清
2014/05/29 DOTA
Python中的类与类型示例详解
2019/07/10 Python
Pyecharts绘制全球流向图的示例代码
2020/01/08 Python
完美解决pycharm导入自己写的py文件爆红问题
2020/02/12 Python
用python介绍4种常用的单链表翻转的方法小结
2020/02/24 Python
python实现逆滤波与维纳滤波示例
2020/02/26 Python
Bailey帽子官方商店:Bailey Hats
2018/09/25 全球购物
架构师岗位职责
2013/11/18 职场文书
成绩单公证书
2014/04/10 职场文书
骨干教师培训方案
2014/05/06 职场文书
社团活动总结书
2014/06/27 职场文书
超搞笑婚前保证书
2015/05/08 职场文书
2015年酒店年度工作总结
2015/05/23 职场文书
工作经历证明范本
2015/06/15 职场文书
教师年度考核自我评鉴
2015/08/11 职场文书
创业计划书之水果店
2019/07/18 职场文书
python glom模块的使用简介
2021/04/13 Python