Appearance
表单校验机制
安装
npm egg-validate-plus --save
开启插件
json
// config/plugin.{env}.js
exports.validatePlus = {
enable: true,
package: 'egg-validate-plus',
};
1
2
3
4
5
6
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
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
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
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