Использование другого значения поля в функции set - PullRequest
0 голосов
/ 18 июня 2019

У меня проблема со схемой, когда я использую другое значение поля для проверки и форматирования входного значения поля.

У меня есть два поля: "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 не имеет доступа к новому значению поля типа.Таким образом, значение устанавливается на неправильное значение, что, в свою очередь, приводит к сбою проверки.

Есть ли способ обойти это?Могу ли я проверить перед настройкой или получить доступ ко всем новым значениям документа в установщике?

...