sql >> Database >  >> NoSQL >> MongoDB

Mongoose pre.save() asynchrone middleware werkt niet zoals verwacht

U gebruikt een parallelle middleware-callback-functie (met beide next en done ), maar u stelt de parallelle vlag niet in de schema.pre . in parameters, dus het gebruikt de seriële regels.

Neem dus ofwel de parallelle vlag op in uw oproep:

schema.pre("save", true, function(next, done) { ...

Of schakel over naar een seriële middleware-callback-stijl als dat toch alles is:

schema.pre("save", function(next) {
    var self = this;

    model.findOne({email : this.email}, 'email', function(err, results) {
        if(err) {
            next(err);
        } else if(results) {
            console.warn('results', results);
            self.invalidate("email", "email must be unique");
            next(new Error("email must be unique"));
        } else {
            next();
        }
    });
});



  1. Asynchrone cursoriteratie met asynchrone subtaak

  2. Mongodb Sharding - geen dergelijk commando:'addShard'

  3. Gesorteerde set van vaste maat in Redis?

  4. Hoe de laatste updatetijd van elk document in MongoDB op te halen?