validation - 快速验证器 : How to validate "start date" is before "end date"

标签 validation express express-validator validator.js

我正在使用 express-validator 进行服务器验证,我在日期验证方面遇到了一些问题。我正在尝试验证我的开始日期是否在我的结束日期之前。我目前正在使用这个:

check('taskStartDate', { isBefore : ('taskEndDate' === undefined ) })
.isBefore('taskEndDate').withMessage('Start Date must be before End Date')

但是,问题是无论我在表单中输入什么日期,开始日期是在结束日期之前还是之后,我都会收到已实现的消息“开始日期必须在结束日期之前”。除了自定义验证器之外,我不知道还有什么办法可以做到这一点,如果这是推荐的方法,我将不胜感激有关如何编写自定义验证的任何指导。我还尝试像这样包括 sanitizer :

check('taskStartDate').isBefore(sanitizeBody('taskEndDate').toDate())
.withMessage( 'Start Date must be before End Date.')

但这也不起作用。任何帮助将不胜感激!

最佳答案

正如@gustavohenke 所写,您应该创建自定义验证器。以下代码适用于 express-validator版本 13.7.0 .与@gustavohenke 示例的主要区别是将验证函数更改为 check() 并且在当前版本中,此函数必须在最后返回 true

[
    check('end').toDate(),
    check('start').toDate().custom((startDate, { req }) => {
        if (startDate.getTime() > req.body.end.getTime()) {
            throw new Error('start date must be before end date');
        }
        return true
    })
];

关于validation - 快速验证器 : How to validate "start date" is before "end date",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51480936/

相关文章:

javascript - 下一个JS : How to send data from one page to another page's getInitialProps function

typescript - Express-validator 验证导致 typescript 错误 : request. query Object is possibly 'undefined'

node.js - 自定义express-validator验证器不起作用

node.js - 使用路由 V4 在快速验证器上未定义检查

javascript - 为什么我的代码会抛出错误?

javascript - 即使包含主体解析器,也会出现类型错误 : Cannot read property '_id' of undefined,

ios - 如何在 iOS 中使用 Sqlite 将登录表单验证到下一页?

validation - 手动 knockout 以重新评估依赖的 Observable

java - 创建 bean 时是否可以让 ApplicationContext 使用 validator ?

javascript - 验证动态添加的表单输入 - Vanilla JS