Node Mysql事务处理封装
发表于:2026-11-01 作者:千家信息网编辑
千家信息网最后更新 2026年11月01日,node回调函数的方式使得数据库事务貌似并没有像java、php那样编写简单,网上找了一些事务处理的封装并没有达到自己预期的那样简单编写,还是自己封装一个吧。封装的大体思路很简单:函数接受一个事务处理
千家信息网最后更新 2026年11月01日Node Mysql事务处理封装
node回调函数的方式使得数据库事务貌似并没有像java、php那样编写简单,网上找了一些事务处理的封装并没有达到自己预期的那样简单编写,还是自己封装一个吧。
封装的大体思路很简单:函数接受一个事务处理的函数,如何处理事务的逻辑由该函数确定,而不是像网上封装的事务是对组装多条预处理SQL和参数。该事务处理函数要求返回Promise。这样我们就可以通过该Promise来确定是提交事务还是回滚事务了。
根据上述思路,实现代码:
let mysql = require('mysql')let config = require('../config')let pool = mysql.createPool(config.database) //config.databa数据库配置let trans = (tran) => { return new Promise((resolve, reject) => { //返回promise提供事务成功与失败的接口 pool.getConnection((err, conn) => { if(err) { reject(err) }else { conn.beginTransaction((err) => { //开始事务处理 if(err) { conn.release() reject(err) }else { let promise = tran(conn) //调用事务处理函数 promise.then(result => { conn.commit(err => { //事务处理函数resolve则提交事务 if(err) { reject(err) }else { resolve(result) } }) }).catch(err => { conn.rollback(() => { //事务处理函数reject则回滚事务 conn.release() reject(err) }) }) } }) } }) })}事务处理函数接受数据库连接对象conn,这里我封装了数据库执行语句:
trans.query = (conn, sql, params) => { return new Promise((resolve, reject) => { conn.query(sql, params,(err, result) => { if(err) { reject(err) }else { resolve(result) } }) })}上面事务处理封装完成,应用就和正常Promise使用相同:
trans((conn) => { return trans.query(conn, db_user.register.user, [username, password, new Date().getTime()]) .then(result => { return trans.query(conn,db_user.login, [username]) }).then(result => { return trans.query(conn,db_user.register.profile,[result[0].id, nickname]) }) }).then(result=>{ console.log('事务提交成功') }).catch(err => { console.log('事务提交失败') })上述案例是我截取项目的一段代码,从上面代码显然可以很容易封装自己的逻辑,可以执行不同路径的事务流程。
事务
处理
函数
封装
数据
数据库
代码
成功
思路
还是
逻辑
不同
相同
参数
可以通过
多条
对象
接口
方式
案例
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
互联网科技公司
云信互联网科技有限公司
科技创新与互联网经济
河南真二互联网科技有限公司
工业互联网科技新基建
互联网 科技公司
互联网与未来科技
广州宏创互联网科技
易通互联网络科技有限公司
广西互联网科技公司
一五八零互联网科技
广州慧亚互联网科技怎么样
随着互联网科技发展
移动互联网科技股
互联网科技革命什么开始
华夏恒生科技与互联网科技
互联网与数字科技关系
互联网科技大会大佬
科技美学互联网 艺术
广州全民伙伴互联网科技有限公司
中国互联网科技工作委员会毛军
智能科技公司是互联网公司吗
互联网科技公司电话
广州紫鲸互联网科技
随着互联网科技发展
互联网为啥属于高科技
知域互联网科技有限公司大骗子
山东子淼互联网科技有限公司
10位科技互联网大佬
高科技和互联网的现代国家