我最近将猫鼬更新为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或更高版本,这就是我遇到此问题的时候。我已经找了几个小时了,但是还没有人遇到这个问题。任何帮助,将不胜感激!
最佳答案
我解决了将所有嵌入式阵列方案的模式类型更改为Schema.Types.Mixed的问题。缺点是我不再对这些模式进行验证,但至少可以解决问题。
关于node.js - Mongoose document.validate从4.4x更新为^ 4.5.1后抛出RangeError,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/43112885/