使用Mongoose,我们可以确保叶路径属于特定类型:new Schema({name: String})
和user.name = {}
将无法通过验证。好的
但假设现在我将模式更改为new Schema({name: {first:String, last:String}})
。运行user.name="Tyler";user.save()
验证得很好。架构完整性验证似乎只适用于叶路径,而不适用于根/中间路径(也就是说,不适用于架构结构)
这里有触发验证错误的方法吗?
Mongoose还支持除叶类型之外的更多模式验证,详细信息请参阅此处:
Mongoose有几个内置的验证器。
- 所有SchemaType都具有所需的内置验证器
- 数字具有最小和最大验证器
- 字符串具有枚举和匹配验证器
也就是说,所需的验证器可以用于解决问题中描述的问题:
new Schema({
name: {
first: {
type: String,
required: true
} ,
last: {
type: String,
required:true
}
}
})
如果内置的验证不足够,那么也有可能编写自定义的验证程序,例如使用mongoose验证程序。