2016-06-08 23 views
0

in Schema habe ichMongoose Schemavalidierung

email: { 
     type: String, 
     required: [true, "Email is required"], 
     unique: true 
    } 
for validation with "unique" i am create 
schema.path('email').validate(function(v){ 
    mongoose.models['User'].findOne({email: this.email}, function(err, user){ 
     if(err){ 
      throw err; 
     }else{ 
      if(user){ 
       this.invalidate("email", "Email exists!"); 
      } 
     } 
    }); 
}, null); 

, aber ich habe einen Fehler: this.invalidate ist keine Funktion. Wer kann mir helfen?

Antwort

0

Sie müssen asynchronous validation verwenden:

schema.path('email').validate(function(email, callback) { 
    mongoose.models['User'].findOne({ email : mail }, function(err, user) { 
    if (err) { 
     return callback(false, 'Unable to check for e-mail uniqueness due to database error'); 
    } else if (user) { 
     return callback(false, 'E-mail should be unique'); 
    } else { 
     return callback(true); 
    } 
    }); 
}); 
+0

Dank, its me half)! – MrGabriel