学习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