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的12个网站推荐
Apr 28 Javascript
如何阻止复制剪切和粘贴事件为了表单内容的安全
May 23 Javascript
jquery ajax 调用失败的原因示例介绍
Sep 27 Javascript
当鼠标滑过文本框自动选中输入框内容的JS代码分享
Nov 26 Javascript
JavaScript中的对象继承关系
Aug 01 Javascript
Bootstrap源码解读表单(2)
Dec 22 Javascript
jQuery Ajax实现跨域请求
Jan 21 Javascript
浅谈node的事件机制
Oct 09 Javascript
详谈commonjs模块与es6模块的区别
Oct 18 Javascript
小程序scroll-view安卓机隐藏横向滚动条的实现详解
May 16 Javascript
对vuex中store和$store的区别说明
Jul 24 Javascript
vue项目实现多语言切换的思路
Sep 17 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 Cookie的一个使用注意点
2008/11/08 PHP
PHP中文字符串截断无乱码解决方法
2016/10/10 PHP
Laravel接收前端ajax传来的数据的实例代码
2017/07/20 PHP
PHP操作redis实现的分页列表,新增,删除功能封装类与用法示例
2018/08/04 PHP
静态页面的值传递(三部曲)
2006/09/25 Javascript
js判断浏览器的比较全的代码
2007/02/13 Javascript
JavaScript 对象模型 执行模型
2009/12/06 Javascript
高亮显示web页表格行的javascript代码
2010/11/19 Javascript
重载toString实现JS HashMap分析
2011/03/13 Javascript
基于jquery的仿百度搜索框效果代码
2011/04/11 Javascript
js日期、星座的级联显示代码
2014/01/23 Javascript
JavaScript小技巧整理篇(非常全)
2016/01/26 Javascript
jQuery ajax分页插件实例代码
2016/01/27 Javascript
全面解析JavaScript中“&&”和“||”操作符(总结篇)
2016/07/18 Javascript
详解Nodejs基于mongoose模块的增删改查的操作
2016/12/21 NodeJs
从零学习node.js之mysql数据库的操作(五)
2017/02/24 Javascript
Bootstrap警告(Alerts)的实现方法
2017/03/22 Javascript
PWA介绍及快速上手搭建一个PWA应用的方法
2019/01/27 Javascript
el-table表头根据内容自适应完美解决表头错位和固定列错位
2021/01/07 Javascript
Python和Java进行DES加密和解密的实例
2018/01/09 Python
django 实现电子支付功能的示例代码
2018/07/25 Python
对matplotlib改变colorbar位置和方向的方法详解
2018/12/13 Python
如何运行.ipynb文件的图文讲解
2019/06/27 Python
django中的数据库迁移的实现
2020/03/16 Python
Django+RestFramework API接口及接口文档并返回json数据操作
2020/07/12 Python
如何用python写个模板引擎
2021/01/14 Python
移动web模拟客户端实现多方框输入密码效果【附代码】
2016/03/25 HTML / CSS
美国眼镜在线零售商:Dualens
2019/12/07 全球购物
认购协议书范本
2014/04/22 职场文书
应届硕士毕业生自荐信
2014/05/26 职场文书
计算机网络及管理学专业求职信
2014/06/05 职场文书
党员个人查摆剖析材料
2014/10/16 职场文书
医院营销工作计划
2015/01/16 职场文书
tensorflow中的数据类型dtype用法说明
2021/05/26 Python
Win11安装受阻怎么办? Windows11安装问题与解决方案汇总
2021/11/21 数码科技
Win10 和 Win11可以共存吗? win10/11产品生命周期/服务更新介绍
2021/11/21 数码科技