У меня проблема со схемой, когда я использую другое значение поля для проверки и форматирования входного значения поля.
У меня есть два поля: "type" и "govIdentifier".Тип enum и может быть либо PRIVATE
, либо ORGANIZATION
.Я хочу отформатировать входное значение для «govIdentifier» в зависимости от значения поля «type», а также проверить его по-разному в зависимости от значения.
Эта часть схемы в настоящее время выглядит следующим образом:
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
не имеет доступа к новому значению поля типа.Таким образом, значение устанавливается на неправильное значение, что, в свою очередь, приводит к сбою проверки.
Есть ли способ обойти это?Могу ли я проверить перед настройкой или получить доступ ко всем новым значениям документа в установщике?