我正在尝试使用以下查询更新模型:
Model.findByIdAndUpdate(id, { min_age: 18, max_age: 24 }, { new: true, runValidators: true, setDefaultsOnInsert: true })
问题是我需要验证这些值是否彼此相对,例如以下查询
Model.findByIdAndUpdate(id, { min_age: 24, max_age: 18 }, { new: true, runValidators: true, setDefaultsOnInsert: true })
我到目前为止构建的模式是这样的:
let ageSchema = new mongoose.Schema({
min_age: {
type: Number,
min: 18,
max: 80,
required: true,
validate: {
validator: function(value) {
return this.max_age >= value
},
message: 'min_age has to be lower than or equal to max_age'
}
},
max_age: {
type: Number,
min: 18,
max: 80,
required: true,
validate: {
validator: function(value) {
return this.min_age <= value
},
message: 'max_age has to be greater than or equal to min_age'
}
}
})
验证可用于创建模型,但不幸的是,它不适用于更新数据。
创建模型时,this
关键字引用了该模型,这使我可以访问此模型上的其他属性。
当我更新模型时,this
关键字指的是全局变量,这使我无法访问此模型上的其他属性。
在更新过程中,是否有任何实用的方法可以基于其他属性来验证这些属性?
谢谢。