MongoDB
 sql >> Baza danych >  >> NoSQL >> MongoDB

Mongoose pre.save() asynchroniczne oprogramowanie pośredniczące nie działa zgodnie z oczekiwaniami

Używasz równoległej funkcji wywołania zwrotnego oprogramowania pośredniego (z obiema next i done ), ale nie ustawiasz flagi równoległej w schema.pre parametry, więc używa reguł szeregowych.

Dołącz więc flagę równoległą do swojego wywołania:

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

Lub przełącz się na styl szeregowego wywołania zwrotnego oprogramowania pośredniczącego, jeśli i tak to wszystko, czego potrzebujesz:

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. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Dopasuj dwa różne pola w Mongoose, Aggregate?

  2. Aktualizacja odniesienia wraz z innymi wartościami Mongoose

  3. Błąd uwierzytelniania żagli-mongo w żaglach 0,10

  4. Mongorestore do innej bazy danych

  5. findOneAndUpdate powodujący problem z duplikacją