数据的存储是需要验证的,不是什么数据都能往数据库里丢或者显示到客户端的,数据的验证需要记住以下规则:
- 验证始终定义在
SchemaType
中 - 验证是一个内部中间件
- 验证是在一个
Document
被保存时默认启用的,除非你关闭验证 - 验证是异步递归的,如果你的
SubDoc
验证失败,Document
也将无法保存 - 验证并不关心错误类型,而通过
ValidationError
这个对象可以访问
####7.1 验证器
required
非空验证min
/max
范围验证(边值验证)enum
/match
枚举验证/匹配验证validate
自定义验证规则
以下是综合案例:
var PersonSchema = new Schema({
name:{
type:'String',
required:true //姓名非空
},
age:{
type:'Nunmer',
min:18, //年龄最小18
max:120 //年龄最大120
},
city:{
type:'String',
enum:['北京','上海'] //只能是北京、上海人
},
other:{
type:'String',
validate:[validator,err] //validator是一个验证函数,err是验证失败的错误信息
}
});
####7.2 验证失败
如果验证失败,则会返回err
信息,err
是一个对象该对象属性如下
err.errors //错误集合(对象)
err.errors.color //错误属性(Schema的color属性)
err.errors.color.message //错误属性信息
err.errors.path //错误属性路径
err.errors.type //错误类型
err.name //错误名称
err.message //错误消息
一旦验证失败,Model
和Entity
都将具有和err
一样的errors
属性