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 相关文章推荐
图片之间的切换
Jun 26 Javascript
js操纵跨frame的三级联动select下拉选项实例介绍
May 19 Javascript
JS实现简单的Canvas画图实例
Jul 04 Javascript
jquery提交form表单简单示例分享
Mar 03 Javascript
php实例分享之实现显示网站运行时间
May 20 Javascript
JavaScript计时器示例分析
Feb 05 Javascript
Jquery插件之Fancybox丰富的弹出层效果附源码下载
Dec 02 Javascript
BootStrap点击下拉菜单项后显示一个新的输入框实现代码
May 16 Javascript
jQuery.Uploadify插件实现带进度条的批量上传功能
Jun 08 Javascript
jquery 实现回车登录详解及实例代码
Oct 23 Javascript
对VUE中的对象添加属性
Sep 18 Javascript
JavaScript面向对象核心知识与概念归纳整理
May 09 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
开启CURL扩展,让服务器支持PHP curl函数(远程采集)
2011/03/19 PHP
PHP上传文件参考配置大文件上传
2015/12/16 PHP
PHP实现的敏感词过滤方法示例
2019/03/06 PHP
laravel框架中控制器的创建和使用方法分析
2019/11/23 PHP
检测jQuery.js是否已加载的判断代码
2011/05/20 Javascript
JavaScript面向对象之Prototypes和继承
2012/07/12 Javascript
javascript模拟select,jselect的方法实现
2012/11/08 Javascript
javascript 使用 NodeList需要注意的问题
2013/03/04 Javascript
jquery移动listbox的值原理及代码
2013/05/03 Javascript
JS实现隐藏同级元素后只显示JS文件内容的方法
2016/09/04 Javascript
Vue方法与事件处理器详解
2016/12/01 Javascript
原生js简单实现放大镜特效
2017/05/16 Javascript
jQuery为某个div加入行样式
2017/06/09 jQuery
用Axios Element实现全局的请求loading的方法
2018/03/15 Javascript
vue-infinite-loading2.0 中文文档详解
2018/04/08 Javascript
JS使用对象的defineProperty进行变量监控操作示例
2019/02/02 Javascript
微信小程序位置授权处理方法
2019/06/13 Javascript
ES6基础之字符串和函数的拓展详解
2019/08/22 Javascript
Python TestCase中的断言方法介绍
2019/05/02 Python
python中多个装饰器的调用顺序详解
2019/07/16 Python
pandas 选取行和列数据的方法详解
2019/08/08 Python
python实现生成Word、docx文件的方法分析
2019/08/30 Python
关于tf.reverse_sequence()简述
2020/01/20 Python
如何对python的字典进行排序
2020/06/19 Python
Keras模型转成tensorflow的.pb操作
2020/07/06 Python
python 获取剪切板内容的两种方法
2020/11/28 Python
matplotlib 画动态图以及plt.ion()和plt.ioff()的使用详解
2021/01/05 Python
莫斯科高科技在线商店:KremlinStore
2019/03/13 全球购物
电子技术专业中专生的自我评价
2013/12/17 职场文书
打造完美自荐信
2014/01/24 职场文书
心理学专业求职信
2014/06/16 职场文书
应届生自荐书
2014/06/23 职场文书
群众路线对照检查材料思想汇报怎么写
2014/09/18 职场文书
九不准学习心得体会
2016/01/23 职场文书
小学四年级作文之人物作文
2019/11/06 职场文书
Pytorch中使用ImageFolder读取数据集时忽略特定文件
2022/03/23 Python