我有这个架构:
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]
答案 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 }
});