• 技术文章 >web前端 >js教程

    Node.js实现mysql连接池使用事务自动回收连接的方法

    小云云小云云2018-02-05 09:46:56原创923
    本文主要和大家介绍Node.js实现mysql连接池使用事务自动回收连接的方法,结合实例形式分析了node.js操作mysql连接池实现基于事务的连接回收操作相关技巧,需要的朋友可以参考下,希望能帮助到大家。

    本文实例讲述了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();
    }

    相关推荐:

    php中Session的自动回收机制详解

    以上就是Node.js实现mysql连接池使用事务自动回收连接的方法的详细内容,更多请关注php中文网其它相关文章!

    声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。
    专题推荐:javascript Node.js mysql
    上一篇:JavaScript求最大公共子串的方法详解 下一篇:js中delete元素和splice元素的区别详解
    20期PHP线上班

    相关文章推荐

    • 【活动】充值PHP中文网VIP即送云服务器• JavaScript数据处理的5个常见问题详解• 整理分享JavaScript开发中常见的5种数据处理问题• 聊聊怎么利用angular Material做统计表格• 一文详解Nodejs中怎么读写文件• 20个稀奇古怪的JS表达式,猜猜输出结果吧!
    1/1

    PHP中文网