1、Mongoose 数据校验
Mongoose 有一些内建验证器。
- 所有 SchemaTypes 都有内建 required 验证器。required 验证器使用 checkRequired() 函数 判定这个值是否满足 required 验证器
- Numbers 有 min 和 max 验证器.
- Strings 有 enum、 match、 maxlength 和 minlength 验证器
- required:表示这个数据必须传入
- max:用于Number类型数据,最大值
- min:用于Number类型数据,最小值
- enum:枚举类型,要求数据必须满足枚举值enum: ['0', '1', '2']
- match:增加的数据必须符合 match(正则)的规则
- maxlength:长度最大值
- minlength:长度最小值
var breakfastSchema = new Schema({
eggs: {
type: Number,
min: [6, 'Too few eggs'],
max: 12
},
bacon: {
type: Number,
required: [true, 'Why no bacon?']
},
drink: {
type: String,
enum: ['Coffee', 'Tea'],
required: function() {
return this.bacon > 3;
}
}
});
2、Mongoose 自定义验证器
如果内建检验器不够用了,你可以定义满足自己需要的检验器
自定义检验器通过传入一个检验函数来定义,更多细节请看 SchemaType#validate() API 文档。
var userSchema = new Schema({
phone: {
type: String,
validate: {
validator: function(v) {
// 自定义的验证器,如果通过验证返回 true,没有通过则返回 false
return /\d{3}-\d{3}-\d{4}/.test(v);
},
message: '{VALUE} is not a valid phone number!'
},
required: [true, 'User phone number required']
}
});
var User = db.model('user', userSchema);
var user = new User();