gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-05 02:15:41 25 4
gpt4 key购买 nike

我正在使用 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com