egg学习笔记Node.js

[Egg.js] egg-tx 接口级事务管理插件

2019-12-23  本文已影响0人  聪明的奇瑞

egg-tx

一个 egg 事务插件,它支持 Mysql、Mongo 数据库,它能做到请求接口级别的事务管理。

依赖的插件

安装

$ npm i egg-tx --save

开启插件

// {app_root}/config/plugin.js
exports.tx = {
  enable: true,
  package: 'egg-tx',
};

配置

// {app_root}/config/config.default.js
exports.tx = {
    reqAction:['POST','PUT','DELETE'], 
    dbType:'mysql'
};

使用例子

你可以通过 ctx.tx.session 获取到本次请求的事务会话对象,前提是它已经被事务管理器所管理。

mysql
await this.ctx.model.User.create(user, {
    transaction: this.ctx.tx.session,
});
mongo
await this.ctx.model.User.insertMany([
  { username: 'lyTongXue', password: '123456' },
], { session: this.ctx.tx.session });

注解

@tx

使用该注解的接口方法将会进行事务管理,即便 reqAction 配置项中未包含该动作类型的请求。

// {app_root}/app/controller/{controller_name}.js
/**
* @tx
*/
async create(){
}
@txIgnore

即便 reqAction 配置项中包含了该动作类型的请求,使用了该注解的接口方法将不会进行事务管理。

// {app_root}/app/controller/{controller_name}.js
/**
* @txIgnore
*/
async index(){
}

提问交流

1、接口方法的 jsDoc 是否有一定要求?

// --- 正确写法

/**
* @TX
*/
async create(){
}

// --- 错误写法

/**
* @TX
*/


async create(){
}

请到 egg issues 异步交流。

License

MIT

上一篇 下一篇

猜你喜欢

热点阅读