Node.js实现mysql连接池使用事务自动回收连接的方法示例
本文实例讲述了Node.js实现mysql连接池使用事务自动回收连接的方法。分享给大家供大家参考,具体如下:
varmysql=require('mysql'), Connection=require('mysql/lib/Connection.js'); varpool=mysql.createPool({ host:'127.0.0.1', database:'myDB', port:3306, user:'root', password:'root', debug:false, connectionLimit:3 }); varexecPool=function(){ pool.getConnection(function(err,conn){ transAutoRelease(conn); conn.beginTransaction(function(err){ if(err)throwerr; conn.query("INSERTINTOtest(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('UPDATEtestsetid=12321312whereid=1',function(err,ret){ if(err){ console.error(err); conn.rollback(function(){ }); }else{ conn.commit(function(){ console.log('success'+JSON.stringify(ret)); }); } }); } }); }); }); } functionafter(fn,cb){returnfunction(){ fn.apply(this,arguments); cb(); } } functiontransAutoRelease(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); functionrelease(){ if(conn){ conn.release(); } } } varintervalStartProcess=function(){ setInterval(function(){ execPool(); },1000); } for(vari=5-1;i>=0;i--){ intervalStartProcess(); }
希望本文所述对大家nodejs程序设计有所帮助。