以下是相关的架构路径:
foo : {
type: mongoose.Schema.Types.ObjectId,
ref: 'Foo',
validate: {
validator: mongoose.Types.ObjectId.isValid,
type: 'custom',
message: 'proper foo is required'
}
},
bar {
type: Number,
required: 'bar should be specified'
}
当foo
作为空字符串(默认值)提交时,会抛出验证错误:
“在路径”foo“...
中,对于值”“,”转换为ObjectID失败“
在这种情况下不会触发验证器。即使validator
更改为() => false
,也无法提供可读的message
。
但是当提供null
而不是空字符串时它会变得很好。如果只能通过验证来处理,我宁愿避免预处理foo
。
相同的错误出现在数字字段bar
:
对于路径“bar”的值“未定义”,转换为数字失败...
为什么没有触发验证器?这种行为是可配置的吗?如何在这里处理不正确的数据类型,因此可以给出人性化的信息?