node.js - 如何在带有 express-validator 的验证链中使用 bail()
问题描述
我想在它到达我的自定义验证器之前保释。
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(),
解决方案
根据 express-validator 文档:
.bail() 可用于防止接触数据库或外部 API 的自定义验证器在您知道它将失败时运行。如果需要,可以在同一验证链中多次使用。
在你的情况下,它会像:
[
check('id')
.exists({ checkNull: true }).bail()
.isMongoId().bail()
.custom(checkIfSessionExists).bail()
.custom(checkIfSessionIsCompletedOrFailed).bail()
.custom(checkIfSessionHasExpired).bail()
.custom(checkIfSessionContainsFrontImage)
...
...
];
因此,如果某些验证失败,则以下验证器将永远不会运行
推荐阅读
- javascript - 以所需格式格式化 json 数组
- python-3.x - Linux 上的 Selenium:selenium.common.exceptions.WebDriverException:消息:“chromedriver_linux64”可执行文件可能具有错误的权限
- spring-mvc - spring-security:spring-mvc web 应用程序的多个身份验证提供程序
- jquery - 复制动态代码并将其显示在对话框中
- django - Django Channels,即时实例化一个新的消费者,没有链接到 Websocket 或其他协议?
- excel - 使用 PowerShell 将范围从一个工作簿表复制到另一个工作簿表
- sql - 根据我在 SQL Server 2016 中给出的时区格式化日期
- python - PyInstaller:ValueError:模块文件...丢失
- android - System.err:调用 js 方法 onCreate 失败 - 缺少主条目。应用程序无法启动。验证应用引导程序
- shopify - Shopify 页面模板部分与另一个页面的不同数据