在mongoose中添加多个验证

Bar*_*rno 11 mongodb node.js

我有这个架构:

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 }
});
Run Code Online (Sandbox Code Playgroud)

这是我的验证"规则"

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

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

为了验证我的名字字段,我尝试了这个:

userSchema.path('name').validate(isNotTooShort, 'Is too short');
userSchema.path('name').validate(onlyLettersAllow, 'Only Letters');
Run Code Online (Sandbox Code Playgroud)

它的工作原理.我可以在Schema中的字段上添加多个验证吗?就像是:

validate:[onlyLettersAllow,isNotTooShort]
Run Code Online (Sandbox Code Playgroud)

Chr*_*n P 32

您可以添加多个验证,如下所示:

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 }
});
Run Code Online (Sandbox Code Playgroud)