我有以下架构:
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预验证钩子,但是似乎无法访问提供的值,并且文档也无济于事。