Anda menggunakan fungsi callback middleware paralel (dengan keduanya next
dan done
), tetapi Anda tidak menyetel tanda paralel di schema.pre
parameter sehingga menggunakan aturan serial.
Jadi, sertakan tanda paralel dalam panggilan Anda:
schema.pre("save", true, function(next, done) { ...
Atau beralih ke gaya panggilan balik middleware serial jika hanya itu yang Anda butuhkan:
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();
}
});
});