使用 ajv 验证 UTC 日期/日期时间,但允许空字符串
Posted
技术标签:
【中文标题】使用 ajv 验证 UTC 日期/日期时间,但允许空字符串【英文标题】:Validate UTC date/date-time with ajv but allow empty strings 【发布时间】:2021-05-19 23:46:27 【问题描述】:我需要验证字符串模式格式:"date"
或格式:"date-time"
以仅接受 ISO 8601 但也允许空字符串“”(“”要求应使用所需的架构)。
"datetime1":
"type": "string",
"format": "date-time",
但是,原生的 ajv 格式解析器不允许空字符串“”通过。如何让它允许空字符串,并且仍然验证 ISO 8601?
我真的必须使用ajv.addFormat()
编写自己的格式检查器吗? "format": "email"
也有同样的问题,我还需要 "" 才能有效。
注意:我无法修改架构,因此无法添加默认值。
【问题讨论】:
【参考方案1】:让我们尝试使用 oneOf
date_to:
type: 'string',
oneOf: [
maxLength: 0
,
format: 'date-time',
minLength: 1
]
,
在第一个对象中,它将允许空字符串。在第二个对象中,它将根据您的格式检查输入
【讨论】:
以上是关于使用 ajv 验证 UTC 日期/日期时间,但允许空字符串的主要内容,如果未能解决你的问题,请参考以下文章
JavaScript:将 UTC 日期时间转换为传递时区的日期时间