最近做一个公司内部的信息化平台,本着短平快,选择了 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
不开心,码几行字.