使用Mongoose,我们可以确保叶子路径属于某种类型:new Schema({name: String})
和user.name = {}
将无法通过验证。好。
但是现在我说我将架构更改为new Schema({name: {first:String, last:String}})
。运行user.name="Tyler";user.save()
验证就好了。似乎模式完整性验证仅适用于叶子路径,而不适用于根/中间路径(也就是说,不适用于模式结构)
有办法在这里触发验证错误吗?
答案 0 :(得分:2)
Mongoose还支持除叶子类型之外的更多模式验证,详情请参见here:
Mongoose有几个内置的验证器。
- 所有SchemaTypes都有内置的必需验证器
- 数字有最小和最大验证者
- 字符串包含枚举和匹配验证器
即所需的验证器可用于解决问题中描述的问题:
new Schema({
name: {
first: {
type: String,
required: true
} ,
last: {
type: String,
required:true
}
}
})
如果内置验证不够,那么也可以编写自定义验证器,例如使用mongoose-validator。