NodeJS 快速验证器:处理条件验证

hc8w905p  于 2023-01-08  发布在  Node.js
关注(0)|答案(1)|浏览(110)

我有一个表单,需要用户的电子邮件和密码。我有快速验证器,检查用户的电子邮件和密码是否为空,如果电子邮件是一个有效的电子邮件设置验证如下所示。

const loginSchema = [
  body("email")
    .isEmail()
    .withMessage("email must contain a valid email address")
    .notEmpty()
    .withMessage("please enter email"),
  body("password").notEmpty().withMessage("please enter password"),
];

在postman中测试时,如果用户没有输入email和密码就提交表单,它会显示所有错误消息。如何使用express validator的条件,使isEmail()withMessage仅在请求正文email不为空时才被调用?

hkmswyz6

hkmswyz61#

来自快速验证器文档:
如果选项onlyFirstError设置为true,则只包括每个字段的第一个错误。
所以你基本上要这样做

validationResult(req).array({ onlyFirstError: true })

或者,您可以使用以下命令将请求中的错误Map为从字段路径到该字段的第一个错误:

validationResult(req).mapped()

相关问题