我正在尝试在更新之前对我的架构运行验证,并在此处提供代码。
模式
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();
});
};
答案 0 :(得分:1)
这是因为验证功能中的THIS具有不同的THIS上下文。这个想法只是针对正在传递的参数提供简单的验证。如果你想要更复杂的东西,可以试试mongoose hooks。