MongoDB
 sql >> база данни >  >> NoSQL >> MongoDB

Асинхронният мидълуер Mongoose pre.save() не работи според очакванията

Използвате паралелна функция за обратно извикване на междинен софтуер (с двете next и done ), но не задавате паралелния флаг в schema.pre параметри, така че използва серийните правила.

Така че или включете паралелния флаг във вашето повикване:

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

Или превключете към стил за обратно извикване на сериен междинен софтуер, ако това е всичко, от което се нуждаете:

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. Mongodb съвпада с акцентирани знаци като основен символ

  2. Очаква се обект за местоположение, масивът за местоположение не е в правилен формат

  3. Колекция Mongodb като динамична

  4. Нова функция за агрегиране с драйвер Mongo 3.2, използвайки Java

  5. Как да извлека данни от колекция MongoDB в C# с помощта на регулярен израз?