我正在mongoose 3.0.3从npm 使用此架构:
mongoose 3.0.3
var schema = new Schema({ _id: Schema.ObjectId, email: {type: String, required: true, unique: true} });
如果我尝试保存已经存在于db中的电子邮件,则ValidationError如果required省略该字段,我希望得到一个类似的电子邮件。但是事实并非如此,我得到了MongoError: E11000 duplicate key error index。
ValidationError
required
MongoError: E11000 duplicate key error index
这不是验证错误(即使我删除了unique:true也会发生)。
知道为什么吗?
我更喜欢将其放在路径验证机制中,例如
UserSchema.path('email').validate(function(value, done) { this.model('User').count({ email: value }, function(err, count) { if (err) { return done(err); } // If `count` is greater than zero, "invalidate" done(!count); }); }, 'Email already exists');
然后,它将被包装,ValidationError并在您调用validate或时作为第一个参数返回save。
validate
save