在验证器中获取isModified

时间:2015-11-04 18:06:00

标签: node.js mongodb mongoose

有没有办法检查验证器中是否修改了路径?如果路径已更改,我是否需要检查或执行验证器?

编辑:

更具体地说,我在插入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

1 个答案:

答案 0 :(得分:1)

是的,验证程序仅在路径更改时运行,并且只有在它们不是undefined时才会运行。除了必需的验证器,它在两种情况下运行。