在快速验证器中访问消息

时间:2019-11-14 02:45:15

标签: node.js express express-validator

如何访问通过.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'

谢谢

2 个答案:

答案 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]来获取消息。