Express-validator .getValidationResult()

时间:2017-08-28 21:06:04

标签: node.js typescript express express-validator

我正在为Web应用程序进行简单登录,但似乎无法正确处理.getValidationResult()。我花了很多时间在明确验证器的npm文档上,尝试在教程中找到答案,并在Stack Overflow等网站上查找,而没有找到我的问题的答案。也许我只是不知道要问的正确问题。

我想确保

  1. 用户提交了具有电子邮件地址形式的内容
  2. 密码不为空。然后我想
  3. 在稍后与数据库交互之前清理电子邮件,然后
  4. 检查前3个程序中是否有任何一个失败。如果出现故障,请将用户返回登录页面。
  5. 我的问题是使用express-validator .getValidationResult()的正确方法是什么?

    这是令人讨厌的代码:

    export let postLogin = (req: Request, res: Response, next: NextFunction) => {
      req.assert("email", "Email is not valid").isEmail();
      req.assert("password", "Password cannot be blank").notEmpty();
      req.sanitize("email").normalizeEmail({ gmail_remove_dots: false });
    
      req.getValidationResult().then(function(result){
          if (result != undefined) {
            console.log(result.array();
            return res.redirect("/login");
          }
        });
    
    //do other login related stuff
    }
    

    我猜这里有一些简单的错误导致了我的错误,但我似乎无法找到它的错误。

1 个答案:

答案 0 :(得分:0)

它返回一个名为 验证对象 的对象的承诺。此对象包含有关应用程序所具有的错误的信息。

解释。

  

运行所有验证并返回验证结果对象   收集错误,同步和异步验证器。

如果有错误,它只会返回错误。以下是该函数返回的一些示例代码。

//The error object

{
  "msg": "The error message",
  "param": "param.name.with.index[0]",
  "value": "param value",
  // Location of the param that generated this error.
  // It's either body, query, params, cookies or headers.
  "location": "body",

  // nestedErrors only exist when using the oneOf function
  "nestedErrors": [{ ... }]
}

当没有错误显示时,该函数返回isEmpty()

如果有任何错误,该函数将返回.array([options])。错误位于[options]数组中。

查看this link以获取可能返回的示例代码。

<强>更新

您也可以像这样使用它,这更容易 请注意,这是express-validator v4.0.0版本的新API。

const { check, validationResult } = require('express-validator/check');
//go to a link    

app.get('/myURL', (req, res, next) => {
      // Get the validation result\
      const errors = validationResult(req).throw();
      if (!errors.isEmpty()) {
        return res.status(422).json({ errors: errors }); //err.mapped() 
 });