📜  express 验证器总是返回错误 - Javascript (1)

📅  最后修改于: 2023-12-03 14:41:04.716000             🧑  作者: Mango

Express 验证器总是返回错误 - Javascript

最近,在使用 Express 应用程序中的验证器时,你可能会遇到一个问题,即无论输入什么内容,验证器都会返回错误。这篇文章将给你一些解决这个问题的方法。

问题

当你在表单中提交数据时,你期望验证器可以成功地验证数据并返回成功或错误的信息。但在某些情况下,您可能会遇到这样的问题,无论您输入什么内容,验证器都会返回错误。这可能导致用户的不满和不便。

原因

这种情况通常是由以下几个原因造成的:

  1. 没有正确设置验证器的规则
  2. 表单输入数据类型与验证规则不匹配
  3. 验证器库版本不同,导致使用错误的方法或参数
解决方案

以下是一些通用的解决方案,你可以尝试使用它们解决问题:

  1. 检查验证器规则是否正确

验证器需要确定您要验证哪些内容,并为这些内容设置规则。如果规则没有正确设置,将会导致验证器总是返回错误。

确保您已正确设置验证器规则。您可以通过查看文档,或查看一些示例代码,来查找正确的规则。

例如,如果你正在使用 express-validator ,代码如下:

const { body, validationResult } = require('express-validator');

app.post('/register', [
  body('username').isLength({ min: 5 }),
  body('email').isEmail(),
], (req, res) => {
  const errors = validationResult(req);
  if (!errors.isEmpty()) {
    return res.status(422).json({ errors: errors.array() });
  }

  // rest of the code
});

在这个例子中,我们要验证用户名和电子邮件,设置了验证器规则。

  1. 对数据类型进行有效验证

另一个可能的问题是,输入的数据类型与验证规则不匹配。例如,你可能在字符串字段中输入数字,这会导致验证器失败。

确保您的验证规则与表单中输入的数据类型匹配。如果您的规则是字符串类型,则输入数据也应该是字符串类型。

例如,如果你的规则设置为:

body('age').isNumeric()

则你在表单中输入的数据也应该是数字类型:

<input type="number" name="age" />
  1. 更新验证器库

如果使用的是未最新版本的验证器库,则可能会导致使用错误的方法或参数。确保您的验证器库是最新的。

例如,如果您在使用express-validator,并且您的版本比较旧,则可能需要更新验证器库:

npm install express-validator@latest
结论

在使用 Express 应用程序中的验证器时,如果您遇到验证器总是返回错误的问题,可以通过检查验证器规则、验证数据类型和更新库来解决问题。确保您的规则正确,并且您的数据类型匹配您的规则。如果遇到比较严重的问题,请检查您的库版本。

希望这篇文章能为你解决问题。