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获得IE版本不准确webbrowser的解决方法
Feb 23 Javascript
用js传递value默认值的示例代码
Sep 11 Javascript
JavaScript实现SHA-1加密算法的方法
Mar 11 Javascript
Backbone.js的Hello World程序实例
Jun 19 Javascript
浅谈angular懒加载的一些坑
Aug 20 Javascript
js querySelector() 使用方法
Dec 21 Javascript
详解bootstrap的modal-remote两种加载方式【强化】
Jan 27 Javascript
vue中Axios的封装与API接口的管理详解
Aug 09 Javascript
对angularJs中自定义指令replace的属性详解
Oct 09 Javascript
微信小程序webview组件交互,内联h5页面并网页实现微信支付实现解析
Aug 16 Javascript
解决layUI的页面显示不全的问题
Sep 20 Javascript
D3.js 实现带伸缩时间轴拓扑图的示例代码
Jan 20 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中一个有意思的日期逻辑处理
2012/03/25 PHP
php 强制下载文件实现代码
2013/10/28 PHP
PHP运行SVN命令显示某用户的文件更新记录的代码
2014/01/03 PHP
php实现字符串翻转的方法
2015/03/27 PHP
javascript 框架小结 个人工作经验
2009/06/13 Javascript
javaScript call 函数的用法说明
2010/04/09 Javascript
JS控制文本框textarea输入字数限制的方法
2013/06/17 Javascript
js window.print实现打印特定控件或内容
2013/09/16 Javascript
如何获取select下拉框的值(option没有及有value属性)
2013/11/08 Javascript
JS不能跨域借助jquery获取IP地址的方法
2014/08/20 Javascript
浅谈Javascript线程及定时机制
2015/07/02 Javascript
javascript封装的sqlite操作类实例
2015/07/17 Javascript
javascript中sort排序实例详解
2016/07/24 Javascript
14 个折磨人的 JavaScript 面试题
2016/08/08 Javascript
jQuery得到多个值只能用取Class ,不能用取ID的方法
2016/12/04 Javascript
解决vue多个路由共用一个页面的问题
2018/03/12 Javascript
浅谈vue项目可以从哪些方面进行优化
2018/05/05 Javascript
vue 属性拦截实现双向绑定的实例代码
2018/10/24 Javascript
详解Vue一个案例引发「内容分发slot」的最全总结
2018/12/02 Javascript
实例讲解JS中pop使用方法
2019/01/27 Javascript
通过js给网页加上水印背景实例
2019/06/17 Javascript
了解Javascript中函数作为对象的魅力
2019/06/19 Javascript
Element 默认勾选表格 toggleRowSelection的实现
2019/09/04 Javascript
PyCharm代码整体缩进,反向缩进的方法
2018/06/25 Python
Python面向对象之继承和组合用法实例分析
2018/08/27 Python
pymysql 开启调试模式的实现
2019/09/24 Python
浅谈matplotlib.pyplot与axes的关系
2020/03/06 Python
jupyter修改文件名方式(TensorFlow)
2020/04/21 Python
python编程的核心知识点总结
2021/02/08 Python
法人委托书范本
2014/04/04 职场文书
法人代表证明书
2014/09/18 职场文书
新学期红领巾广播稿
2014/10/04 职场文书
2015年妇女工作总结
2015/05/14 职场文书
新闻简讯格式及范文
2015/07/22 职场文书
范文之农村基层党建工作报告
2019/10/24 职场文书
手把手教你用SpringBoot将文件打包成zip存放或导出
2021/06/11 Java/Android