在mongoose中添加多个验证

时间:2014-06-14 10:59:08

标签: node.js mongodb

我有这个架构:

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 }
});

这是我的验证“规则”

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

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

要验证我的名字字段,我试过这个:

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

它有效。我可以在Schema中的字段上添加多个验证吗? 类似的东西:

validate:[onlyLettersAllow,isNotTooShort]

1 个答案:

答案 0 :(得分:30)

您可以添加多个这样的验证:

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 }
});