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

时间:2019-05-21 15:15:09

标签: node.js mongodb mongoose mongoose-schema

我正在使用猫鼬模式,并为一些非必需字段编写了一个自定义验证器。验证器在存在该字段时可以正常工作,但是在缺少该字段时会失败(这是可以的,因为该字段未标记为“必填”)。

我的问题是:

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

2 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:0)

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

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

如果出现此属性,则对象必须具有“ addr”字段,否则验证将失败。