Node.js 中 mysql 事務的寫法
阿新 • • 發佈:2020-12-15
最近做一個公司內部的資訊化平臺,本著短平快,選擇了 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) }) }) }, exeQuery(con, SQLs, res) { if (!SQLs.length) { con.commit(function (err) { if (err) { res.status(400).end() return con.rollback() } res.status(200).end() }) } 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
不開心,碼幾行字.