【问题标题】:Mongoose custom validator fails if non-required field is missing如果缺少非必填字段,Mongoose 自定义验证器将失败
【发布时间】:2019-10-08 00:48:21
【问题描述】:

我正在使用猫鼬模式,并为一些非必填字段编写了一个自定义验证器。当该字段存在时,验证器可以正常工作,但如果该字段丢失,则验证器会失败(这没关系,因为该字段未标记为“必填”)。

我的问题是:

  1. 这是正确的行为吗?
  2. 如果缺少该字段,如何使其跳过验证?

【问题讨论】:

  • 您是否尝试向验证器添加空检查?
  • 我做了,结果一样。

标签: node.js mongodb mongoose mongoose-schema


【解决方案1】:

您可以使用自定义验证器,因为它仅在值存在时调用。

另请参阅: Mongoose validation: required : false, validate : regex, issues with empty values

【讨论】:

    【解决方案2】:

    发现问题:猫鼬模式包含“默认”属性:

    addr: { type: String, maxlength: [50, "max length for address"], validate: { validator: validators.validateAddress, message: "address is invalid" }, default: "" },

    如果出现此属性,则该对象必须有'addr'字段,否则验证失败。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-05-23
      • 2013-01-06
      • 2019-04-04
      • 2016-09-07
      • 2018-02-28
      • 1970-01-01
      相关资源
      最近更新 更多