iis服务器助手广告广告
返回顶部
首页 > 资讯 > 数据库 >Node Mysql事务处理封装
  • 536
分享到

Node Mysql事务处理封装

2024-04-02 19:04:59 536人浏览 安东尼
摘要

node回调函数的方式使得数据库事务貌似并没有像java、PHP那样编写简单,网上找了一些事务处理的封装并没有达到自己预期的那样简单编写,还是自己封装一个吧。封装的大体思路很简单:函数接受一个事务处理的函数

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(‘事务提交失败’)
     })

上述案例是我截取项目的一段代码,从上面代码显然可以很容易封装自己的逻辑,可以执行不同路径的事务流程。

您可能感兴趣的文档:

--结束END--

本文标题: Node Mysql事务处理封装

本文链接: https://www.lsjlt.com/news/41902.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Node Mysql事务处理封装
    node回调函数的方式使得数据库事务貌似并没有像java、php那样编写简单,网上找了一些事务处理的封装并没有达到自己预期的那样简单编写,还是自己封装一个吧。封装的大体思路很简单:函数接受一个事务处理的函数...
    99+
    2022-10-18
  • node如何封装mysql处理语句
    本篇内容介绍了“node如何封装mysql处理语句”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!一.所需包npm i m...
    99+
    2023-07-05
  • 一文聊聊node怎么封装mysql处理语句
    const mysql = require('../mysql/mysql')let connection = null;connection = mysql.createConnection();let bad_msg =...
    99+
    2023-05-14
    node nodejs mysql
  • node连接mysql查询事务处理的实现
    目录进入正题 mysql 增删改查mysql 事务处理自己用 mysql 很多次的,然后又是主玩nodejs的.专门写一篇文章来说说nodejs连接mysql数据库。在使用之前,请检...
    99+
    2022-11-12
  • MySQL事务处理
    概述 在MySQL中只有使用了InnoDB数据库存储引擎的数据库或表才支持事务。 事务处理可以用来维护数据库的完整性,保证成批的SQL语句要么全部成功,要么全部失败。 事务用来管理DDL、DML、DCL操作,比如:insert、...
    99+
    2014-12-03
    MySQL事务处理
  • mysql事务处理(转)
    mysql事务处理(转)[@more@]缺省的,MySQL 运行在 autocommit 模式。这就意味着,当你执行完一个更新时,MySQL 将立刻将更新存储到磁盘上。 如果你使用事务安全表 (例如 Inn...
    99+
    2022-10-18
  • node基于async/await对mysql进行封装的示例分析
    小编给大家分享一下node基于async/await对mysql进行封装的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!...
    99+
    2022-10-19
  • 用 Node + MySQL 处理 100G 数据
    通过这个 Node.js 和 MySQL 示例项目,我们将看看如何有效地处理 数十亿行 占用 数百GB 存储空间的数据。 本文的第二个目标是帮助你确定 Node.js + MySQL 是否适合你的需求,并...
    99+
    2022-05-11
    MySQL MySQL
  • Node连接MySQL并封装其增删改查的实现代码
    目录Node连接Mysql 安装Mysql模块 连接Mysql 常用的SQL语句 Node操作Mysql 封装 结束 Node连接Mysql 说到node,可能大家会想到MOngo...
    99+
    2022-11-12
  • Node的事件处理和readline模块详解
    目录一、Node的事件处理二、通过Node的readline模块实现终端的输入总结一、Node的事件处理 1、采用事件驱动模型 2、Node是单线程的,采用事件轮询方式来处理事件 3...
    99+
    2022-11-13
  • 如何在mysql中事务处理
    如何在mysql中事务处理?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。事务的特性: 事务有以下四个标准属性的缩写ACID,通常被称...
    99+
    2022-10-18
  • MySql事务处理怎么创建
    本篇内容主要讲解“MySql事务处理怎么创建”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“MySql事务处理怎么创建”吧!#本文中我的用计算机的MYSQL数据库...
    99+
    2022-10-19
  • 什么是MySQL的事务处理
    本文主要给大家简单讲讲什么是MySQL的事务处理,相关专业术语大家可以上网查查或者找一些相关书籍补充一下,这里就不涉猎了,我们就直奔主题吧,希望什么是MySQL的事务处理这篇文章可以给大家带来一些实际帮助。...
    99+
    2022-10-18
  • java基础之如何封装处理
    这篇文章主要介绍了java基础之如何封装处理,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。1、private实现封装处理如果像想要知道封装,首先必须清楚如果没有封装会怎么样?...
    99+
    2023-06-20
  • Spring事务专题(三)事务的基本概念,Mysql事务处理原理
    前言 本专题大纲: 专栏大纲 我重新整理了大纲,思考了很久,决定单独将MySQL的事务实现原理跟Spring中的事务示例分为两篇文章,因为二者毕竟没有什么实际关系,实际上如果你对MySQL的事务原理不感兴趣也可以直接跳过本文,等待接下来两...
    99+
    2017-03-18
    Spring事务专题(三)事务的基本概念,Mysql事务处理原理 数据库入门 数据库基础教程 数据库 mysql
  • golang db事务的统一封装的实现
    目录简单封装偷懒第一步偷懒第二步偷懒第三步进一步封装事务处理的流程示例 database := db.DB tx, err := database.Begin(...
    99+
    2022-11-12
  • mysql事务处理指的是什么
    这篇文章主要介绍了mysql事务处理指的是什么的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇mysql事务处理指的是什么文章都会有所收获,下面我们一起来看看吧。在mysql中,...
    99+
    2022-11-30
    mysql
  • 【Mysql】mysql事务处理用法与实例详解
    来源:转载  代码如下 复制代码 root@host# mysql -u root -p pas...
    99+
    2022-10-18
  • MySQL事务处理实现方法步骤
    需求说明: 案例背景:银行的转账过程中,发生意外是在所难免。为了避免意外而造成不必要的损失,使用事务处理的方式进行处理:A账户现有余额1000元,向余额为200的B账户进行转账500元。可能由于某...
    99+
    2022-10-18
  • 如何实现MySQL中的事务处理?
    如何实现MySQL中的事务处理?事务是数据库中重要的概念之一,能够保证数据的一致性和完整性,确保在并发操作中数据的正确性。MySQL作为一种常用的关系型数据库,也提供了事务处理的机制。一、事务的特点事务具有以下四个特点,通常用ACID来概括...
    99+
    2023-10-22
    MySQL 事务 处理
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作