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();
}
});
});