【发布时间】:2012-11-14 23:50:04
【问题描述】:
跟进来自:Mongoose unique validation error type
我将这个架构与来自 npm 的 mongoose 3.0.3 一起使用:
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() 仍将返回 MongoError: E11000 duplicate key error index 并且仅在此之后调用 console.warn()。
在根据文档调用所有中间件done()之前,不应调用保存操作,我应该返回一个验证错误。
done() 的行为似乎没有按预期工作,
知道为什么吗?
【问题讨论】:
标签: node.js validation mongodb mongoose