nodejs之mysql事务封装与使用

本文介绍如何在Node.js中使用MySQL模块进行事务处理,通过类的方式进行封装,简化事务操作。涉及到bluebird模块将回调函数转换为Promise,以及在实际项目中的应用示例,包括数据库连接、OrderModel的封装和使用。
摘要由CSDN通过智能技术生成

简介

本文章主要针对nodejs中MySQL模块下事务的封装,利用es6新特性中的class类的封装,让事务更加容易调用和使用。(主要因为网上能查到的好多都是简单的事务使用,但是在真实项目中需要再次加工,所以这里是我稍微加工后,够目前项目使用的结构,如果您感觉冗余性还是很高,欢迎你们再次加工?)。

所需模块

目前MySQL模块是使用回调函数的形式来接受返回的数据,这样无疑会导致多种嵌套的使用,所以我们利用bluebird模块进行加工变成promise,来美观代码:

  1. mysql :V2.16.0;
  2. bluebird:V^3.5.2;

文件结构

  1. config:mysql.json(MySQL的连接参数)
  2. db:mysql.js(包含mysql的配置与连接池)
  3. model:OrderModel.js(此次拿订单做比喻)

干货部分

话不多少,只有代码才能说明一切。

1 此部分为mysql初始化配置信息:

// config文件下的mysql.json
{
   
  "host":"xx.xxx.xxx.xx",
  "user":"root",
  "password":"root",
  "database":"shop"
}

2 数据库连接

//db文件下的mysql.js
var mysqlConfig=require('../config/mysql');
var db    = {
   };
var mysql = require('mysql');
var bluebird=require('bluebird');
var pool  = mysql.createPool(mysqlConfig);
 
let getConnection=bluebird.promisify(pool.getConnection,{
   context:pool});//将原getConnection回调函数变为promise函数
//将连接池的连接return出去
async function getconnection(){
   
    let result=await getConnection();
    return new Promise(function (resolve,reject) {
   
        resolve(result);
    })
}
module.exports=async function(){
   
    return await getconnection();
}

3 orderModel的封装和对数据库的使用

var Connection = require('../db/newmysql');
var bluebird=require('bluebird');
const utils=require('../utils/index')();
const logger=utils.logger;
class Order{
   
    constructor(){
   
        this.oid=0;
        this.onumber="";//订单编号
        this.oaccount=0.0;//订单金额
        this.recipient="";//收件人
        this.phone="";
        this.express="";
        this.ordertime="";
        this.paytime="";
        this.state=0;
        
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值