Bạn đang sử dụng chức năng gọi lại phần mềm trung gian song song (với cả next
và done
), nhưng bạn không đặt cờ song song trong schema.pre
vì vậy nó sử dụng các quy tắc nối tiếp.
Vì vậy, hãy bao gồm cờ song song trong lệnh gọi của bạn:
schema.pre("save", true, function(next, done) { ...
Hoặc chuyển sang kiểu gọi lại phần mềm trung gian nối tiếp nếu đó là tất cả những gì bạn cần:
schema.pre("save", function(next) {
var self = this;
model.findOne({email : this.email}, 'email', function(err, results) {
if(err) {
next(err);
} else if(results) {
console.warn('results', results);
self.invalidate("email", "email must be unique");
next(new Error("email must be unique"));
} else {
next();
}
});
});