栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

猫鼬-RangeError:超出最大调用堆栈大小

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

猫鼬-RangeError:超出最大调用堆栈大小

我遇到了同样的问题,我开始研究猫鼬的源代码(版本3.8.14)。最终它引导我进入了这条线

  • mongoose / node_modules / mongodb / lib / mongodb / collection / core.js-> 插入 (…)-> insertWithWriteCommands (…)->
  • mongoose / node_modules / mongodb / lib / mongodb / collection / batch / ordered.js-> bulk.insert(docs [i]) -> addToOperationsList(…) -> bson.calculateObjectSize(document,false);

var bsonSize = bson.calculateObjectSize(document,false);

显然,这调用了BSON.calculateObjectSize,后者调用了calculateObjectSize,然后无限递归。我无法深入探究导致它的原因,但发现它可能与将猫鼬包装器绑定到Schema的功能有关。由于我将原始数据插入到mongoDB中,因此,一旦我决定将mongoose中的批量插入更改为标准javascript对象,问题就消失了,批量插入正确地发生了。您可能可以执行类似的操作。

本质上,我的代码来自

//EDIT: mongoose.model needs lowercase 'm' for getter methodvar myModel = mongoose.model('MyCollection');var toInsert = myModel();var array = [toInsert];myModel.collection.insert(array, {}, function(err, docs) {});

//EDIT: mongoose.model needs lowercase 'm' for getter methodvar myModel = mongoose.model('MyCollection');var toInsert = { //stuff in here    name: 'john',   date: new Date()};var array = [toInsert];myModel.collection.insert(array, {}, function(err, docs) {});


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/417910.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号