2014-06-14 8 views
9

Ich habe dieses Schema:Fügen Sie mehr als ein Validate in Mungo

var userSchema = new mongoose.Schema({ 
    name: {type: String,required: true,lowercase: true, trim: true}, 
    email: {type: String, required : true, validate: validateEmail }, 
    createdOn: { type: Date, default: Date.now }, 
    lastLogin: { type: Date, default: Date.now } 
}); 

und dies sind meine Validierung "Regeln"

var isNotTooShort = function(string) { 
    return string && string.length >= 5; 
}; 

var onlyLettersAllow = function(string) { 
    var myRegxp = /^[a-zA-Z]+$/i; 
    return myRegxp.test(string); 
}; 

Zu meinem Namensfeld habe ich versucht, bestätigen dies:

userSchema.path('name').validate(isNotTooShort, 'Is too short'); 
userSchema.path('name').validate(onlyLettersAllow, 'Only Letters'); 

und es funktioniert. Kann ich mehrere Validierungen für ein Feld in Schema hinzufügen? Etwas wie:

validate:[onlyLettersAllow,isNotTooShort] 

Antwort

26

Sie können mehr als eine Validierung wie folgt hinzu:

var manyValidators = [ 
    { validator: isNotTooShort, msg: 'Is too short' }, 
    { validator: onlyLettersAllow, msg: 'Only Letters' } 
]; 

var userSchema = new Schema({ 
    name: { type: String, validate: manyValidators }, 
    email: {type: String, required : true, validate: validateEmail }, 
    createdOn: { type: Date, default: Date.now }, 
    lastLogin: { type: Date, default: Date.now } 
}); 
+1

Docs hier: http://mongoosejs.com/docs/api.html#schematype_SchemaType-validate – JohnnyHK

+0

super- tolle Antworten ... – Fattie

Verwandte Themen