猫鼬不验证更新

时间:2019-12-03 16:21:29

标签: node.js mongodb mongoose

我目前有一个经过验证的猫鼬架构:

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()更新文档时执行的。

是否可以更改它,以便仅在创建文档时执行验证,而在更新文档时不执行验证?

1 个答案:

答案 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