一個 egg 事務插件,它支持 Mysql、Mongo 數據庫,它能作到請求接口級別的事務管理。mysql
egg-sequelize
插件。egg-mongoose
插件。$ 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
獲取到本次請求的事務會話對象,前提是它已經被事務管理器所管理。git
await this.ctx.model.User.create(user, {
transaction: this.ctx.tx.session,
});
複製代碼
await this.ctx.model.User.insertMany([
{ username: 'lyTongXue', password: '123456' },
], { session: this.ctx.tx.session });
複製代碼
使用該註解的接口方法將會進行事務管理,即使 reqAction 配置項中未包含該動做類型的請求。github
// {app_root}/app/controller/{controller_name}.js
/** * @tx */
async create(){
}
複製代碼
即使 reqAction 配置項中包含了該動做類型的請求,使用了該註解的接口方法將不會進行事務管理。sql
// {app_root}/app/controller/{controller_name}.js
/** * @txIgnore */
async index(){
}
複製代碼
一、接口方法的 jsDoc 是否有必定要求?數據庫
// --- 正確寫法
/** * @TX */
async create(){
}
// --- 錯誤寫法
/** * @TX */
async create(){
}
複製代碼
請到 egg issues 異步交流。npm
MIT數組