在设定函数中使用另一个字段值

时间:2019-06-18 08:37:02

标签: mongoose mongoose-schema

我遇到一个架构问题,正在使用另一个字段值进行验证并设置字段的输入值格式。

我有两个字段:“类型”和“ govIdentifier”。类型是一个枚举,可以为PRIVATEORGANIZATION。我想根据“类型”字段的值来格式化“ 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函数无法访问类型字段的新值。因此,将值设置为错误的值,这又导致验证失败。

有什么办法解决吗?我可以在设置之前进行验证,还是可以访问设置器中的所有新文档值?

0 个答案:

没有答案