我目前有一个经过验证的猫鼬架构:
assignmentID: {
type: Number,
validate: {
validator: function(v) {
if (!v) {
return false;
}
return Assignment.findById(v)
.then(assignmentDoc => {
if (!assignmentDoc) {
return false;
} else {
return true;
}
})
.catch(error => {
return false;
});
},
message: "Invalid assignment ID."
}
}
验证器运行完美。但是,它是在我通过.save()
更新文档时执行的。
是否可以更改它,以便仅在创建文档时执行验证,而在更新文档时不执行验证?
答案 0 :(得分:1)
是的,您可以将validateBeforeSave
设置为false:
var schema = new Schema({ name: String });
schema.set('validateBeforeSave', false);
schema.path('name').validate(function (value) {
return v != null;
});
var M = mongoose.model('Person', schema);
var m = new M({ name: null });
m.validate(function(err) {
console.log(err); // Will tell you that null is not allowed.
});
m.save(); // Succeeds despite being invalid
参考:https://mongoosejs.com/docs/guide.html#validateBeforeSave