我遇到一个架构问题,正在使用另一个字段值进行验证并设置字段的输入值格式。
我有两个字段:“类型”和“ govIdentifier”。类型是一个枚举,可以为PRIVATE
或ORGANIZATION
。我想根据“类型”字段的值来格式化“ govIdentifier”的输入值,并根据该值进行不同的验证。
这部分架构目前看起来像这样:
govIdentifier: {
type: String,
set: function (value) {
if (this.type === 'PRIVATE') {
return personnummer.normalise(value)
} else {
return value
}
},
validate: {
validator: function (value) {
if (this.type === 'PRIVATE') {
return personnummer.validate(value)
} else {
return personnummer.validateCIN(value)
}
},
message: props => {
return `${props.value} is not a valid. Supply a valid Swedish social security number if the type is 'PRIVATE', or a valid Swedish corporate identity number if the type is 'ORGANIZATION'.`
}
}
},
type: {
type: String,
required: true,
enum: [
'PRIVATE',
'ORGANIZATION'
]
},
这在我这样做时失败:
document.set({
type: 'ORGANIZATION'
govIdentifier: '123456' // An actual valid number here
}.save()
因为set
函数无法访问类型字段的新值。因此,将值设置为错误的值,这又导致验证失败。
有什么办法解决吗?我可以在设置之前进行验证,还是可以访问设置器中的所有新文档值?