相关疑难解决方法(0)

Mongoose pre.save()异步中间件无法按预期工作

跟进:Mongoose唯一验证错误类型

mongoose 3.0.3从npm 使用这个架构:

var schema = new Schema({

    _id: Schema.ObjectId,
    email: {type: String, required: true, unique: true}

});
Run Code Online (Sandbox Code Playgroud)

使用此中间件从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();
});
Run Code Online (Sandbox Code Playgroud)

但是,它不起作用!

Users.create()仍将返回aa MongoError: E11000 duplicate key error index,console.warn()之后才会调用.

done()根据文档调用所有中间件之前,不应调用保存操作,我应该返回验证错误. …

validation mongoose mongodb node.js

19
推荐指数
1
解决办法
4万
查看次数

标签 统计

mongodb ×1

mongoose ×1

node.js ×1

validation ×1