如何访问通过.withMessage()方法生成的express-validator中的消息?我的目的是使用res.render渲染错误消息,其中{messages = ???}。该函数本身运行正常。
这是我的验证器功能
const userValidationRules = () => {
return [
//Whole Body Validation
body('username').isLength({ min: 5 }).withMessage('username must be at least 5 chars long'), //{"errors":[{"username":"username must be at least 5 chars long"}]}
body('password').isLength({ min: 5 }).withMessage('password must be at least 5 chars long'),
]
}
const validate = (req, res, next) => {
const errors = validationResult(req)
if (errors.isEmpty()) {
return next()
}
const extractedErrors = []
errors.array().map(err => extractedErrors.push({ [err.param]: err.msg }))
console.log("extractedErrors = "+ extractedErrors )
// return res.render("index", {
// messages : //display error messages here
// });
return res.status(422).json({
errors: extractedErrors,
})
}
简短的用户名输出{“错误”:[{“用户名”:“用户名必须至少5个字符”“]}
我正在使用console.log()查找消息值-“用户名必须至少5个字符长”。
console.log(“ extractedErrors =” + extractedErrors)日志'extractedErrors = [对象对象]' 那么我该如何访问该对象?
console.log(“ extractedErrors =” + extractedErrors [“ errors”])日志'extractedErrors = undefined'
谢谢
答案 0 :(得分:0)
通常,每个结构化的javascript错误都有逻辑。它们各自的错误消息错误代码...尝试使用此代码:
POST http://localhost/aplikasi-laravel/MY/user/login 500 (Internal Server Error) Jquery-3.1.1.min.js: 4
Request URL: http://localhost/aplikasi-laravel/MY/user/login
Request Method: POST
Status Code: 500 Internal Server Error
Remote Address: [::1]:80
Referrer Policy: no-referrer-when-downgrade
答案 1 :(得分:0)
为解决此问题,我最终将返回的错误重新映射到一个更易于访问的对象中:
errors.array().map(err => extractedErrors.push( err.msg ));
然后我可以使用extractedErrors [0]来获取消息。