Node.js 中 mysql 事务的写法
最近做一个公司内部的信息化平台,本着短平快,选择了 Nodejs + Express + Vue + mysql/mongodb 的技术路线.
该写法主要利用了递归,下面把事务的写法记录一下,做了简单的封装:
const mysql = require('mysql')
const cfg = require('../appConfig.json')
var sqlpool = mysql.createPool(cfg.mysql)
const conns = {
sqlpool: sqlpool,
transaction(SQLs, res) {
this.sqlpool.getConnection((err, conn) => {
if (err) {
res.status(400).end()
return
}
conn.beginTransaction(err => {
if (err) {
res.status(400).end()
return
}
this.exeQuery(conn, SQLs, res)
})
conn.release()
})
},
exeQuery(con, SQLs, res) {
if (!SQLs.length) {
con.commit(function (err) {
if (err) {
res.status(400).end()
return con.rollback()
}
res.status(200).end()
return
})
}
else{
let s = SQLs.shift()
con.query(s, err => {
if (err) {
con.rollback()
res.status(400).end()
return
}
this.exeQuery(con, SQLs, res)
})
}
}
}
module.exports = conns
不开心,码几行字.