1. 程式人生 > 實用技巧 >Node.js 中 mysql 事務的寫法

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) }) }) }, 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

不開心,碼幾行字.