如何确保Mongoose模式结构

如何确保Mongoose模式结构,mongoose,Mongoose,使用Mongoose,我们可以确保叶路径属于某种类型:新模式({name:String})和user.name={}将无法通过验证。好 但是假设现在我将模式更改为新模式({name:{first:String,last:String})。正在运行user.name=“Tyler”;user.save()验证正常。架构完整性验证似乎只适用于叶路径,而不适用于根/中间路径(aka,不适用于架构结构) 这里是否有触发验证错误的方法?Mongoose还支持除叶类型以外的一些模式验证,有关详细信息,请参阅

使用Mongoose,我们可以确保叶路径属于某种类型:
新模式({name:String})
user.name={}
将无法通过验证。好

但是假设现在我将模式更改为
新模式({name:{first:String,last:String})
。正在运行user.name=“Tyler”;user.save()验证正常。架构完整性验证似乎只适用于叶路径,而不适用于根/中间路径(aka,不适用于架构结构)


这里是否有触发验证错误的方法?

Mongoose还支持除叶类型以外的一些模式验证,有关详细信息,请参阅:

Mongoose有几个内置的验证器

  • 所有schematype都具有内置的必需验证器
  • 数字有最小值和最大值验证器
  • 字符串具有枚举和匹配验证器
也就是说,所需的验证器可用于解决问题中描述的问题:

new Schema({
    name: {
        first: {
            type: String,
            required: true
        } , 
        last: {
            type: String,
            required:true
        }
     }
})

如果内置验证不充分,那么也有可能编写自定义验证程序,例如。

顺便说一句,这也不起作用:
schema.path('name').validate(函数(v){return typeof v=='object',},err)
。抛出
无法调用未定义的方法“validate”
所需的
想法进行良好思考。我想了想,试了试,成功了——然后放弃了“这不可能是正确的方法”的想法。现在你提到它,我想得更彻底,我认为这实际上是一个相当不错的方法。