我最近将猫鼬更新为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/

10-16 20:53