0

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

我想确保

  1. 用户提交了电子邮件地址形式的内容,
  2. 密码不为空。然后我想
  3. 在稍后与数据库交互之前清理电子邮件,然后
  4. 检查前 3 个过程中是否有任何一个失败。如果失败,则将用户返回到登录页面。

我的问题是使用 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
}

我猜是一些简单的事情导致了我的错误,但我似乎找不到它是什么。

4

1 回答 1

0

它返回一个名为Validation Object的对象的承诺。此对象包含有关您的应用程序已出现的错误的信息。

说明。

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

它所做的只是返回错误(如果有)。这是该函数返回的一些示例代码。

//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]数组中。

查看此链接以获取它可能返回的示例代码。

更新

您也可以像这样使用它,这更容易。
请注意,这是从 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() 
 });
于 2017-08-28T21:22:01.047 回答