Вслед за: Уникальный тип ошибки проверки Mongoose
Я использую эту схему с mongoose 3.0.3
от npm:
var schema = new Schema({
_id: Schema.ObjectId,
email: {type: String, required: true, unique: true}
});
С этим промежуточным программным обеспечением, чтобы получить validationError от уникального: true
schema.pre("save", function(next, done) {
var self = this;
model.findOne({email : this.email}, 'email', function(err, results) {
if(err) {
done(err);
} else if(results) {
console.warn('results', results);
self.invalidate("email", "email must be unique");
done(new Error("email must be unique"));
} else {
done();
}
});
next();
});
Однако это не сработает!
Users.create()
все равно вернет a MongoError: E11000 duplicate key error index
, а console.warn()
вызывается только после этого.
Действие сохранения не должно вызываться до тех пор, пока все связующее ПО done()
не будут вызваны в соответствии с документами, и я должен вернуть ошибку проверки.
Похоже, что поведение done()
работает не так, как ожидалось,
Любая идея, почему?