我遇到了同样的问题,我开始研究猫鼬的源代码(版本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) {});


