Express-validator 7.0.1 isDate()始终返回false问题求助
express-validator v7.0.1 中 isDate 验证失败问题
问题描述
以下代码在express-validator 6.14.2版本中可正常运行:
const checkDate = check("date").isDate(); // simplified but you get the idea, app.post( "/path1", [checkDate], async (req, res) => { ... process the req ... } );
测试时req.body为{ date: "2021-02-12", ... },该日期检查在v6.14.2中可通过,但升级到v7.0.1后开始失败。注释掉checkDate后测试恢复正常,查看更新日志未找到相关说明,请问原因是什么?
原因及解决办法
- 核心原因是express-validator v7.x升级了底层依赖的validator.js版本,
isDate()方法的默认验证规则发生了变更:默认启用了严格模式,不再自动识别YYYY-MM-DD这类字符串格式的日期。 - 可以通过两种方式解决:
- 显式指定日期格式:
const checkDate = check("date").isDate({ format: 'YYYY-MM-DD' }); - 关闭严格模式(允许解析更多常见日期格式):
const checkDate = check("date").isDate({ strictMode: false });
- 显式指定日期格式:
内容的提问来源于stack exchange,提问作者user3552178
相关产品推荐
相关产品推荐

