1.安装,在使用之前需要下载对应的包
npm i @hapi/joi
npm i @escook/express-joi
上面的代码也可以简写成这样避免代码重复,同时安装多个包
npm i @hapi/joi @escook/express-joi
上面的@是包自带的,一般在包名的后面使用“@版本号”来为所下载的包指定版本号。
2.安装好对应的包之后需要建立一个校验规则的文件夹,文件夹中存放对应路由的校验规则,下面的图片中的分别是文章分类和用户的校验规则文件。
3.在校验规则文件中使用@hapi/joi包定义校验规则,并共享校验规则对象,这样在其他文件中只要导入该文件就可以使用向外暴露的对象。
//导入定义验证规则的的包
const joi = require('@hapi/joi')
//定义账号和密码的验证规则
const username = joi.string().alphanum().min(1).max(10).required()
const password = joi.string().pattern(/^[\s]{6,12}$/).required()
//注册登录验证规则的对象
exports.reg_login_schema = {
body:{
username,
password
}
}
joi中方法的意思:
string()满足字符串
alphanum() 满足a-zA-Z0-9
min() 最小值
max() 最大值
required() 必选项
pattern()正则表达式
email() 邮件格式
number() 数字
integer() 整数
4.在需要使用该规则的路由文件中使用require导入对应的规则文件
//导入验证表单数据的中间件
const expressJoi = require('@escook/express-joi')
//导入验证规则对象
const {reg_login_schema} = require('../schema/user')
在这里引入验证规则的时候使用到了解构赋值的方法,即只获取了文件向外暴露的reg_login_schema 而不导入其他的,因为不需要导入全部文件,所以这样可以提高文件加载的效率。
5.导入规则文件之后在需要使用规则的定义路由处使用expressJoi模块将规则包裹并放在路由映射和路由处理函数的中间,多个处理规则可以用逗号隔开。
router.post('/regUser',expressJoi(reg_login_schema),userHandler.regUser)