Měl jsem stejný problém a začal jsem se prohrabovat zdrojovým kódem mongoose (verze 3.8.14). Nakonec mě to přivedlo k této linii v rámci
- mongoose/node_modules/mongodb/lib/mongodb/collection/core.js -> vložit (...) -> 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);
Zdá se, že to volá BSON.calculateObjectSize, které volá countObjectSize, což se pak nekonečně opakuje. Nebyl jsem schopen zapátrat tak daleko v tom, co to způsobilo, ale napadlo mě, že to může mít něco společného s funkcemi vazby mangoose wrapper na schéma. Protože jsem do mongoDB vkládal nezpracovaná data, jakmile jsem se rozhodl změnit hromadné vkládání v mongoose na standardní objekt javascript, problém zmizel a hromadné vkládání proběhlo správně. Možná byste mohli udělat něco podobného.
Můj kód v podstatě pochází z
//EDIT: mongoose.model needs lowercase 'm' for getter method
var myModel = mongoose.model('MyCollection');
var toInsert = myModel();
var array = [toInsert];
myModel.collection.insert(array, {}, function(err, docs) {});
do
//EDIT: mongoose.model needs lowercase 'm' for getter method
var myModel = mongoose.model('MyCollection');
var toInsert = { //stuff in here
name: 'john',
date: new Date()
};
var array = [toInsert];
myModel.collection.insert(array, {}, function(err, docs) {});