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程序设计有所帮助。