我试图在更新之前对我的模式运行验证,下面是它的代码。
模式
var workSchema = mongoose.Schema({
location: {
type: String,
required: true,
enum: LOCATIONS
},
flags: {
isHourly: {
type: Boolean,
default: false,
validate: [workValidators, 'Message']
}
}
});
function workValidators(flag) {
if (flag) {
/* WHY IS .this NUll? */
assert(this.location, 'Must have location specified');
}}
workSchema.findByIdAndUpdate(id, {
$set: info
}, {
runValidators: true,
new: true
}).then((updatedModel) => {
return updatedModel.toObject();
});
};
这是因为验证函数中的This具有不同的This上下文。其思想只是针对传递的参数提供一个简单的验证。如果您想要更复杂的东西,可以尝试使用猫鼬钩子。