Skip to content
On this page

表单校验机制

https://github.com/temool/egg-validate-plus

安装

npm egg-validate-plus --save

开启插件

json
// config/plugin.{env}.js

exports.validatePlus = {
  enable: true,
  package: 'egg-validate-plus',
};
1
2
3
4
5
6

配置插件

javascript
// config/config.{env}.js

config.validatePlus = {
  resolveError(ctx, errors) {
    if (errors.length) {
      ctx.type = "json";

      ctx.status = 400;

      ctx.body = {
        code: 400,
        error: errors,
        message: "参数错误",
      };
    }
  },
};
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17

使用插件

传入字符串

javascript
// app/controller/xx.js
const { query } = this.ctx.request;
1
2

拿到验证结果

javascript
const validateResult = await this.ctx.validate("user.login", query);
1

验证不通过时,阻止后面的代码执行

javascript
if (!validateResult) return;
1

> 注意:不要带上 rules

直接传入验证规则对象

javascript
// app/controller/xx.js

// 直接引入 rules 文件下的验证规则,也可以是自己写的验证规则对象

const rule = this.app.rules.user.login;

// 数据格式

// const rule = {

//   id: [

//     { required: true },

//     { type: 'number', message: 'id 必须为数字 }

//   ],

//   password: [

//     { required: true },

//     { type: 'string', message: 'password 必须为字符串 }

//   ]

// }

// 从客户端传入的参数

const { query } = this.ctx.request;

// 数据格式:
// query = {

//   username: 123456,

//   password: 'abcdefg'

// }

// 拿到验证结果

const validateResult = await this.ctx.validate(rule, query);

// 验证不通过时,阻止后面的代码执行

if (!validateResult) return;
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
沪ICP备20006251号-1