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

2019-08-19 admin

NPM versionbuild statusTest coverageKnown Vulnerabilitiesnpm download

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

依赖的插件

  • 对于使用 Mysql 数据库你需要开启 egg-sequelize 插件。
  • 对于使用 Mongo 数据库你需要开启 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'
};
  • reqAction:将为指定动作的所有请求进行事务管理,该数组的值可为 GET、POST、PUT、DELETE、HEAD、PATCH、OPTIONS(默认值为 POST、PUT、DELETE)
  • dbType:所使用的数据库类型,该值可为 mysql 或 mongo (默认值为 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

<a>MIT</a>

[转载]原文链接:https://segmentfault.com/a/1190000020114085

本站文章除注明转载外,均为本站原创或编译。欢迎任何形式的转载,但请务必注明出处。

转载请注明:文章转载自 JavaScript中文网 [https://www.javascriptcn.com]

本文地址:https://www.javascriptcn.com/read-72901.html

文章标题:[eggjs] egg-tx 接口级事务管理插件

相关文章
js实现带圆角的两级导航菜单效果代码
本文实例讲述了js实现带圆角的两级导航菜单效果代码。分享给大家供大家参考。具体如下: 这是一款使用JS做的圆角菜单,支持两级菜单显示,本人比较喜欢的风格,修改使用方便,新手也能上手快。使用有几张圆角图片来修饰了菜单,喜欢的朋友可以下载代码留...
2017-03-29
H5页面实现下载文件(apk、txt等)的三种方式
需求描述 接到的原始需求是这样的,有一个H5页面,页面中有个“点击下载”的按钮,点击之后,完成下载特定的apk。 大概是下面这样的👇: 需求分析 接到需求的时候我偷乐了一下,这个H5页面最大的优点是不在微信中使用(微信好坑,各种限制,基...
2018-07-18
JavaScript实现级联菜单的方法
本文实例讲述了JavaScript实现级联菜单的方法。分享给大家供大家参考。具体实现方法如下: &lt;html&gt; &lt;head&gt; &lt;title&gt;test&lt;&#x2F;title&gt; &lt;scr...
2017-03-27
JS简单实现城市二级联动选择插件的方法
本文实例讲述了JS简单实现城市二级联动选择插件的方法。分享给大家供大家参考。具体如下: js实现的城市联动选择菜单,网上经常见到,不多介绍了,本款城市选择菜单原型基于Select,主要使用JavaScript来实现,运用了数组和循环等基础技...
2017-03-29
jQuery插件Skippr实现焦点图幻灯片特效
史上效果最好的焦点图幻灯片jQuery插件Skippr,轻量级插件、响应式布局插件,强大的参数自定义 配置,可自定义切换速度、切换方式、是否显示左右箭头、是否自动播放、自动播放间隔时间等配置 参数,调用插件也非常简单易用,调用方式下面介绍下...
2017-03-22
javascript基于DOM实现省市级联下拉框的方法
本文实例讲述了javascript基于DOM实现省市级联下拉框的方法。分享给大家供大家参考。具体实现方法如下: &lt;html xmlns=&quot;http:&#x2F;&#x2F;www.w3.org&#x2F;1999&#x2F;...
2017-03-23
当 Egg.js 遇上 Typescript
# 前言 TypeScript is a typed superset of JavaScript that compiles to plain JavaScript. TypeScript 的静态类型检查,智能提示,IDE 友好性等特...
2018-04-14
超级简单实现JavaScript MVC 样式框架
介绍 使用过JavaScript框架(如AngularJS, Backbone 或者Ember)的人都很熟悉在UI(用户界面,前端)中mvc的工作机理。这些框架实现了MVC,使得在一个单页面中实现根据需要变化视图时更加轻松,而模型-视图-控...
2017-03-21
javascript解析xml实现省市县三级联动的方法
本文实例讲述了javascript解析xml实现省市县三级联动的方法。分享给大家供大家参考。具体实现方法如下: (该方法适用于任何常用浏览器) &lt;body&gt; &lt;div&gt; &lt;span&gt; &lt...
2017-03-27
10条建议帮助你创建更好的jQuery插件
本文总结了帮助你创建更好jQuery插件的10条建议。分享给大家供大家参考。具体说明如下: 在开发过很多 jQuery 插件以后,我慢慢的摸索出了一套开发jQuery插件比较标准的结构和模式。这样我就可以 copy &amp; paste ...
2017-03-23
回到顶部