猫鼬-如果可用枚举列表中没有新值,如何设置默认值

时间:2018-07-26 20:37:14

标签: javascript node.js mongoose mongoose-schema

我有以下架构:

const userSchema = new mongoose.Schema({
  profile: {
    name: {
      type: String,
      default: "",
      enum: ["", "Mike", "John", "Bob"]
    }
  }
}

我想确保在触发user.save动作并提供name变量不在可用enum值列表中时,验证不会失败,而是设置值到default

例如,在“节点”中:

User
  .findById(req.user.id)
  .then(user => {
    user = Object.assign(user, { name: "Sam" })
    return user.save()
  })

这将失败,并使用 Sam进行验证,它不是路径profile.name 的有效枚举值,但是要求将值回退到空字符串:

{
  name: ""
}

我尝试使用Mongoose预验证钩子,但是似乎无法访问提供的值,并且文档也无济于事。

1 个答案:

答案 0 :(得分:0)

也许您可以使用pre save hooks

NumberFormatter