学习joi的过程中在导出e.message过程中发现了如下错误
Joi.validate%20is%20not%20a%20function
通过查找发现是新版本joi的语法问题
原代码
//引入joi模块
const Joi=require('joi')
module.exports=async(req,res)=>{
//定义对象的验证规则
const schema={
username:Joi.string().min(2).max(12).required().error(new Error('用户名不符合验证规则')),
email:Joi.string().email().required().error(new Error('邮箱格式不符合要求')),
password:Joi.string().regex(/^[a-zA-Z0-9]{3,30}$/).required().error(new Error('密码格式不符合要求')),
role:Joi.string().valid('normal','admin').required().error(new Error("角色值非法")),
state:Joi.number().valid(0,1).required().error(new Error('状态值非法'))
}
//用try{}catch(){}语句来捕获异步函数的异常
try{
//实施验证
await Joi.validate(req.body,schema)
}catch(e){
//验证没有通过
//e.message
//重定向回用户添加页面
res.redirect(`/admin/user-edit?${e.message}`)
}
更改后
//引入joi模块
const Joi=require('joi')
module.exports=async(req,res)=>{
//定义对象的验证规则
const schema=Joi.object({
username:Joi.string().min(2).max(12).required().error(new Error('用户名不符合验证规则')),
email:Joi.string().email().required().error(new Error('邮箱格式不符合要求')),
password:Joi.string().regex(/^[a-zA-Z0-9]{3,30}$/).required().error(new Error('密码格式不符合要求')),
role:Joi.string().valid('normal','admin').required().error(new Error("角色值非法")),
state:Joi.number().valid(0,1).required().error(new Error('状态值非法'))
})
//用try{}catch(){}语句来捕获异步函数的异常
try{
//实施验证
await schema.validateAsync(req.body)
}catch(e){
//验证没有通过
//e.message
//重定向回用户添加页面
res.redirect(`/admin/user-edit?${e.message}`)
}
}
参考文章https://blog.csdn.net/m0_46248316/article/details/107836409