使用 ajv 验证 UTC date/date-time 但允许空字符串

Validate UTC date/date-time with ajv but allow empty strings

我需要验证字符串架构格式:"date" 或格式:"date-time" 以仅接受 ISO 8601 但也允许空字符串“”( "" 要求应使用所需的架构单独检查)。

{
   "datetime1": {
      "type": "string",
      "format": "date-time",
   }
}

但是原生的ajv格式解析器是不允许空字符串""通过的。我如何让它允许空字符串,并且仍然验证 ISO 8601?

我真的必须使用 ajv.addFormat() 编写自己的格式检查器吗? "format": "email" 我也有同样的问题,我还需要 "" 才有效。

注意:我无法修改架构,因此无法添加默认值。

让我们尝试使用 oneOf

date_to: {
  type: 'string',
  oneOf: [
    {
      maxLength: 0
    },
    {
      format: 'date-time',
      minLength: 1
    }
  ]
},

在第一个对象中,它允许空字符串。在第二个对象中,它将根据您的格式检查输入