sql >> Databáze >  >> NoSQL >> MongoDB

Asynchronní middleware Mongoose pre.save() nefunguje podle očekávání

Používáte funkci zpětného volání paralelního middlewaru (s oběma next a done ), ale nenastavujete paralelní příznak v schema.pre parametry, takže používá sériová pravidla.

Takže buď zahrňte do svého volání paralelní příznak:

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

Nebo přepněte na styl zpětného volání sériového middlewaru, pokud je to vše, co přesto potřebujete:

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. Mongodb - Jak najít řetězec ve více polích?

  2. mongodb - zkontrolujte, zda je pole jednou z mnoha hodnot

  3. Proč konektor Spark Mongo nestlačuje filtry?

  4. Mongodb agreguje (počítá) na více polích současně