有没有办法检查验证器中是否修改了路径?如果路径已更改,我是否需要检查或执行验证器?
编辑:
更具体地说,我在插入id之前确保作者存在:
var BookSchema = new Schema({
title: { type: String, required: true },
authorId: { type: Schema.Types.ObjectId, ref: 'Author' }
});
BookSchema.path('authorId').validate(function(authorId, done) {
Author.getAuthorById(authorId, function(err, author) {
if (err || !author) {
done(false);
} else {
done(true);
}
});
}, 'Invalid author, does not exist');
在这种情况下,我只想验证authorId是否已设置或是否更改。我是否需要检查函数是否已更改,或者我是否可以假设只有在authorId更改且不是null / undefined时才调用此验证器?
这使我看起来可以调用isModified,但是我没有看到它作为'this'的函数。 Mongoose validation only when changed
答案 0 :(得分:1)
是的,验证程序仅在路径更改时运行,并且只有在它们不是undefined
时才会运行。除了必需的验证器,它在两种情况下运行。