からのフォローアップ: Mongoose 固有の検証エラー タイプ
私はmongoose 3.0.3
npmからこのスキーマを使用しています:
var schema = new Schema({
_id: Schema.ObjectId,
email: {type: String, required: true, unique: true}
});
このミドルウェアを使用して、unique:true から validationError を取得します
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()
は引き続き aaMongoError: E11000 duplicate key error index
を返し、console.warn()
その後のみ呼び出されます。
done()
ドキュメントに従ってすべてのミドルウェアが呼び出されるまで、保存アクションは呼び出されるべきではなく、検証エラーが返されるはずです。
done()
動作が期待どおりに機能していないように見えますが、
理由はありますか?