mongoose document.validate从4.4x更新到^ 4.5.1后抛出RangeError

时间:2017-03-30 08:50:42

标签: node.js mongodb mongoose

我最近更新了mongoose到4.5.1或者其他任何真正的东西。 Document.validate现在抛出“RangeError:超出最大调用堆栈大小”当我的架构有嵌入式文档数组时会发生这种情况。虽然如果数组为空,验证成功。这适用于我的所有模式。

以下是我的代码示例

var userSchema = new Schema({
      name: { type: String, required: true },
      roles: { type: [userRoleSchema]: default [] }
})

var userRoleSchema = new Schema({
      type: { type: String, required: true },
      organization: { type: Schema.Types.ObjectId, ref: 'organization', required: false },
})

// Later when I call this
userDocument.validate((err) => { /* I don't even end up here */ })

我在4.4.1和4.4.2以及4.5.0上测试了我的代码,我没有问题。但我确实需要使用4.5.1或更高版本,这就是我遇到这个问题的时候。我已经找了好几个小时但没找到有这个问题的人。任何帮助将不胜感激!

1 个答案:

答案 0 :(得分:1)

我解决了将所有嵌入式阵列方案的模式类型更改为Schema.Types.Mixed的问题。缺点是我不再对这些模式进行验证,但它至少解决了这个问题。