如果缺少非必填字段,Mongoose 自定义验证器将失败

Mongoose custom validator fails if non-required field is missing

我正在使用 mongoose 模式,并为一些非必填字段编写了自定义验证程序。当该字段存在时验证器工作完美,但如果该字段缺失(这没关系,因为该字段未标记为 'required')则失败。

我的问题是:

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

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

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

发现问题:猫鼬模式包含 "default" 属性:

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

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