Joi如何显示自定义错误消息Joi.validate%20is%20not%20a%20function

    科技2024-02-19  97

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

    Processed: 0.012, SQL: 8