• NodeJs mysql 开启事务


    如题;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 + '
    ' + '链接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
    }
    

    相关操作步骤已经在注释中写明,本人实测有效。如需使用需加上自己的数据库配置及相关表明等动态配置。

  • 相关阅读:
    Spring05_基于注解的IOC和DI
    Spring02_基于XML的IOC
    Spring01_概述及程序的耦合
    设计模式六、单例模式
    设计模式五,建造者模式
    前后端分离异常统一处理
    vue qs.stringify 和JSON.stringify 区别
    设计模式四、抽象工厂模式
    设计模式三、工厂方法模式
    设计模式二、简单工厂模式——静态工厂模式
  • 原文地址:https://www.cnblogs.com/ysk123/p/10221963.html
Copyright © 2020-2023  润新知