【问题标题】:Validate UTC date/date-time with ajv but allow empty strings使用 ajv 验证 UTC 日期/日期时间,但允许空字符串
【发布时间】:2021-05-19 23:46:27
【问题描述】:

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

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

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

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

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

【问题讨论】:

    标签: javascript ajv


    【解决方案1】:

    让我们尝试使用 oneOf

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-08-10
      • 2011-06-13
      • 2021-04-19
      • 2016-01-25
      • 1970-01-01
      相关资源
      最近更新 更多