项目用到了node来做后台服务端,自然避免不了要用redis、sql等等。在mysql中挑了promise-mysql来做,其中的pool连接池用着挺方便的。
但最近的业务需要用上事务,官方文档貌似没有特别的说明。
源码的pool有个getConnection的方法,同时return new PoolConnection
再看看这个PoolConnection,调用了Connection.call(this, null, _connection),说明具有connection的所有功能
便可追进Connection里面看,有beginTransaction,query,commit,rollback,足够我们使用,另外PoolConnection里面还有release方法,保证了pool连接池的不用destroy掉这个connection。
不说废话,直接贴码
let conn = await pool.getConnection()
await conn.beginTransaction()
try {
await conn.query('sql语句')
await conn.query('sql语句')
await conn.query('sql语句')
await conn.commit()
} catch (err) {
await conn.rollback()
} finally {
conn.release()
}
网友评论