Node后台使用mysql并开启事务
2024-08-30 03:43:13
如题;node后台使用mysql数据库,并使用事务来管理数据库操作。
这里主要讲一个事务的封装并写了一个INSERT 插入操作。
code:
基础code:
db.config.js
const mysql = require('mysql') const pool = mysql.createPool({
connectionLimit: 20, //连接池连接数
host: 'localhost', //数据库地址,这里用的是本地
database: 'xxxx', //数据库名称
user: 'xxxxx', // username
password: '*****' // password
})
//返回一个Promise链接
const connectHandle = () => new Promise((resolve, reject) => {
pool.getConnection((err, connection) => {
if(err) {
console.error('链接错误:' + err.stack + '\n' + '链接ID:' + connection.threadId)
reject(err)
} else {
resolve(connection)
}
})
}) module.exports = connectHandle
事务操作
const connectHandler = require('./db.config') //引入上面所讲的数据库基础配置 const insertHandler = async (vals) => {
const connection = await connectHandler() // 得到链接
const tablename = 'xxxxx' //动态table(表)名称
//开启事务
connection.beginTransaction( err => {
if(err) {
return '开启事务失败'
} else {
//执行INSERT插入操作
connection.query(`INSERT INTO ${tablename} SET ?`, vals, (e, rows, fields) => {
if(e) {
return connection.rollback(() => {
console.log('插入失败数据回滚')
})
} else {
connection.commit((error) => {
if(error) {
console.log('事务提交失败')
}
})
connection.release() // 释放链接
return {rows, success: true} // 返回数据库操作结果这里数据格式可根据个人或团队规范来定制
}
})
}
})
} module.exports = {
insertHandler
}
相关操作步骤已经在注释中写明,本人实测有效。如需使用需加上自己的数据库配置及相关表明等动态配置。
有问题还原大家留言指正,国庆快到了祝大家节日快乐~
最新文章
- HTML <;meta>; 标签,搜索引擎
- PHP 根据key 给二维数组分组
- Unity Shader入门
- Linux下查看文件和文件夹大小
- DNS反射攻击阻止
- android 设计工具栏
- 11. Container With Most Water
- C++14介绍
- 探秘ReSharper8.1版本中Architecture(架构工具)的改进
- 笔记:Spring Cloud Feign 其他配置
- django 实战篇之模板层
- HTML实现页面自动跳转的五种方法
- How to delete deployed process definition in activiti?
- 丑闻第三季 /全集Scandal迅雷下载
- php封装数据库函数
- Django请求响应对象
- git的常见问题
- (转)Springboot+shiro配置笔记+错误小结
- jquery和dom对象相互转化的方法
- Microsoft Power BI Desktop概念学习系列之Microsoft Power BI Desktop是什么?