node.js - 如何在带有express-validator的验证链中使用bail()

标签 node.js express-validator

我想在它到达我的自定义验证器之前进行保释。

   public classification = () => [
        param("id").exists({ checkNull: true }).isMongoId().bail(),
        param("id")
            .custom(checkIfSessionExists)
            .custom(checkIfSessionIsCompletedOrFailed)
            .custom(checkIfSessionHasExpired)
            .custom(checkIfSessionContainsFrontImage),
        validationResultHandler,
    ]

为什么我不能在这里应用.bail():param("id").exists({ checkNull: true }).isMongoId().bail(),

最佳答案

根据快速验证器文档:

.bail() 对于防止接触数据库或外部 API 的自定义验证器在您知道它会失败时运行非常有用。如果需要,可以在同一个验证链中多次使用。

在你的情况下,它会像:

[
  check('id')
   .exists({ checkNull: true }).bail()
   .isMongoId().bail()
   .custom(checkIfSessionExists).bail()
   .custom(checkIfSessionIsCompletedOrFailed).bail()
   .custom(checkIfSessionHasExpired).bail()
   .custom(checkIfSessionContainsFrontImage)
  ...
  ...
];

因此,如果某些验证失败,则以下验证器将永远不会运行

关于node.js - 如何在带有express-validator的验证链中使用bail(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60205785/

相关文章:

javascript - pug 变量未在 href 标签上求值

node.js - 数据验证停止工作 multipart/form-data

mongoose - Mongoose 验证和使用 express-validator 有什么区别

arrays - 如何在快速验证器中比较数组的整数元素?

javascript - NodeJS MongoDB 连接字符串问题

javascript - DOTENV 未正确读取变量

javascript - 运行react/redux应用程序所需的最低server.js?

asynchronous - 有没有办法在 Redis 中获取锁? ( Node .js)

node.js - Express-Validator v4 简约示例始终返回错误

node.js - Express Validator - 如何处理条件验证