如何确保Mongoose模式结构



使用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验证程序。