第三方模块Joi
Galloping_Leo 2020-02-20 node第三方模块
# 第三方模块 Joi
# 概述
joi
是 node.js
的一个工具模块,主要用于 JavaScript
对象的校验。它是一种简单易用的 javacript
对象约束描述语言,可以轻松解决 nodejs
开发中的各种参数的校验。
# 验证规则
username
joi.string() // 规定该字段为字符类型
.required() // 该字段必须填写
.min(3) // 该字段字符串长度最短 3
.max(5) // 该字段字符串最长长度 5
.error(new Error('用户名不符合规则')) // 错误提示信息设置,不符合验证规则时,报的信息。
1
2
3
4
5
2
3
4
5
age
joi.number() // 规定该字段为数字类型
.required() //
.min(18) // 最小18
.max(30) // 最大 30
1
2
3
4
2
3
4
status
joi.number()
.valid(0, 1) // 该字段的值必须为 0 或 1
.required()
.error(new Error('状态不符合规则!')),
1
2
3
4
2
3
4
email
joi.string()
.required()
.email() // 该字段要满足邮箱验证规则
.error(new Error('邮箱格式不符合要求'))
1
2
3
4
2
3
4
password
joi.string()
.regex(/^[a-zA-Z0-9]{3,30}$/) // 该字段要符合该正则表达式的验证
.required()
.error(new Error('密码不符合要求'))
1
2
3
4
2
3
4
# 使用
首先定义以一个验证规则 schema
,然后再调用 joi.validate(obj, schema)
来验证 obj
的字段是否符合 shema
的要求。
const joi = require('joi')
//验证函数
let validate = user => {
//定义验证规则
let schema = {
username: joi.string().required().min(3).max(5).error(new Error('用户名不符合规则')),
age: joi.number().required().min(18).max(30),
status: joi.number().valid(0, 1).required().error(new Error('状态不符合规则!')),
email: joi.string().required().email().error(new Error('邮箱格式不符合要求')),
password: joi.string().regex(/^[a-zA-Z0-9]{3,30}$/).required().error(new Error('密码不符合要求')),
}
//返回验证结果
return joi.validate(user, schema)
}
//执行函数
let run = async () => {
let user = {
username: 'cyx',
age: 22,
status: 2,
email: 'example@qq.com',
password: 'zs123456'
}
try {
await validate(user)
} catch (error) {
console.log(error.message)
}
}
//执行
run()
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
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
注意
joi.validate
函数返回一个类 promise
对象,可以当作 promise
处理。