我最近更新了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或更高版本,这就是我遇到这个问题的时候。我已经找了好几个小时但没找到有这个问题的人。任何帮助将不胜感激!
答案 0 :(得分:1)
我解决了将所有嵌入式阵列方案的模式类型更改为Schema.Types.Mixed的问题。缺点是我不再对这些模式进行验证,但它至少解决了这个问题。