sql >> Database teknologi >  >> NoSQL >> MongoDB

Mongoose pre.save() async middleware fungerer ikke som forventet

Du bruger en parallel middleware-callback-funktion (med både next). og done ), men du indstiller ikke parallelflaget i schema.pre parametre, så den bruger de serielle regler.

Så medtag enten parallelflaget i dit opkald:

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

Eller skift til en seriel middleware-tilbagekaldsstil, hvis det alligevel er alt, du har brug for:

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. Hvordan kan jeg sortere efter $elemMatch i MongoDB?

  2. Fejl ved opbygning af Mongodb på ubuntu-server

  3. MongoDB $uge

  4. Lagring af stor fil på 100 MB i Mongodb