技术文摘
NodeJs 使用 Mysql 模块实现事务处理的实例
2025-01-15 04:10:32 小编
NodeJs 使用 Mysql 模块实现事务处理的实例
在 NodeJs 开发中,使用 Mysql 模块进行数据库操作时,事务处理是确保数据一致性和完整性的重要手段。本文将通过实例展示如何在 NodeJs 中利用 Mysql 模块实现事务处理。
确保已经安装了 mysql 模块。可以通过 npm install mysql 命令进行安装。
以下是一个简单的示例代码,用于演示事务处理的基本流程:
const mysql = require('mysql');
// 创建数据库连接池
const pool = mysql.createPool({
host: 'localhost',
user: 'root',
password: 'password',
database: 'test',
connectionLimit: 10
});
// 开始事务
function startTransaction() {
return new Promise((resolve, reject) => {
pool.getConnection((err, connection) => {
if (err) {
reject(err);
} else {
connection.beginTransaction((beginErr) => {
if (beginErr) {
connection.release();
reject(beginErr);
} else {
resolve(connection);
}
});
}
});
});
}
// 提交事务
function commitTransaction(connection) {
return new Promise((resolve, reject) => {
connection.commit((commitErr) => {
if (commitErr) {
connection.rollback(() => {
connection.release();
reject(commitErr);
});
} else {
connection.release();
resolve();
}
});
});
}
// 执行事务操作
async function executeTransaction() {
try {
const connection = await startTransaction();
const sql1 = 'INSERT INTO users (name, email) VALUES (?,?)';
const values1 = ['John Doe', 'john@example.com'];
await new Promise((resolve, reject) => {
connection.query(sql1, values1, (err, result) => {
if (err) {
reject(err);
} else {
resolve(result);
}
});
});
const sql2 = 'UPDATE users SET email =? WHERE name =?';
const values2 = ['newjohn@example.com', 'John Doe'];
await new Promise((resolve, reject) => {
connection.query(sql2, values2, (err, result) => {
if (err) {
reject(err);
} else {
resolve(result);
}
});
});
await commitTransaction(connection);
console.log('事务执行成功');
} catch (error) {
console.error('事务执行失败:', error);
}
}
executeTransaction();
在上述代码中,首先创建了一个数据库连接池。startTransaction 函数用于开始一个新的事务并返回一个数据库连接。commitTransaction 函数负责提交事务并释放连接。executeTransaction 函数是事务操作的核心,在其中依次执行多个数据库操作,并在所有操作成功后提交事务。如果任何一个操作出错,事务将回滚。
通过这样的方式,在 NodeJs 中利用 Mysql 模块可以轻松实现可靠的事务处理,保障数据的一致性和完整性,为项目的稳定运行提供有力支持。
- MySQL存储引擎如何选?MyISAM与InnoDB优劣势对比
- MySQL 双写缓冲性能优化技巧与实践经验分享
- 探寻提升查询性能的全文搜索存储引擎:MySQL与Elasticsearch整合之道
- MySQL双写缓冲性能优化手段深度探究
- 使用MySQL的MOD函数进行求模运算获取余数
- MySQL 中 STRCMP 函数用于比较两个字符串大小的方法
- Java 与 Redis 构建分布式计数器:高并发实现之道
- 提升存储引擎吞吐量:MySQL 中 MaxScale 的应用实例
- 用Python与Redis搭建实时电子邮件服务:自动发送邮件的方法
- MySQL 怎样实现数据的复制与同步
- 借助Redis打造高效Ruby应用程序
- JavaScript开发中Redis的应用:数据缓存实现方法
- Node.js 结合 Redis 搭建实时聊天应用的方法
- PHP 与 Redis 多数据库操作:数据分区实现方法
- Redis 与 C# 实现分布式事务功能的方法