当前位置: 首页 > 后端技术 > Node.js

[eggjs]egg-tx接口级事务管理插件

时间:2023-04-03 18:19:59 Node.js

egg-tx是一个egg事务插件,支持Mysql、Mongo数据库,可以实现request接口级事务管理。依赖插件要使用Mysql数据库,您需要启用egg-sequelize插件。要使用Mongo数据库,您需要启用egg-mongoose插件。安装$npmiegg-tx--saveenableplugin//{app_root}/config/plugin.jsexports.tx={enable:true,package:'egg-tx',};配置//{app_root}/config/config.default.jsexports.tx={reqAction:['POST','PUT','DELETE'],dbType:'mysql'};reqAction:事务管理将对所有请求执行指定的action,这个数组的值可以为GET、POST、PUT、DELETE、HEAD、PATCH、OPTIONS(默认值为POST、PUT、DELETE)dbType:使用的数据库类型,取值可以是mysql或mongo(默认为mysql)。比如可以通过ctx.tx.session获取本次请求的事务会话对象,前提是已经被事务管理器管理。mysqlawaitthis.ctx.model.User.create(user,{transaction:this.ctx.tx.session,});mongoawaitthis.ctx.model.User.insertMany([{username:'lyTongXue',password:'123456'},],{session:this.ctx.tx.session});注解@tx使用该注解的接口方法会进行事务管理,即使reqAction配置项不包含该action类型的请求。//{app_root}/app/controller/{controller_name}.js/***@tx*/asynccreate(){}@txIgnore即使reqAction配置项中包含该action类型的请求,该注解的接口isused方法不会执行事务管理。//{app_root}/app/controller/{controller_name}.js/***@txIgnore*/asyncindex(){}问题交流1.接口方法的jsDoc有要求吗?jsDoc必须在方法的“旁边”,如://---正确的写法/***@TX*/asynccreate(){}//---错误的写法/***@TX*/asynccreate(){}异步通信请去egg问题。许可证麻省理工学院