Jag hade samma problem och jag började gräva igenom mongoose-källkoden (version 3.8.14). Så småningom ledde det mig till denna linje inom
- mongoose/node_modules/mongodb/lib/mongodb/collection/core.js -> infoga (...) -> insertWithWriteCommands (...) ->
-
mongoose/node_modules/mongodb/lib/mongodb/collection/batch/ordered.js -> bulk.insert(docs[i]) -> addToOperationsList(...) -> bson.calculateObjectSize(dokument, falskt);
var bsonSize =bson.calculateObjectSize(dokument, falskt);
Tydligen anropar detta BSON.calculateObjectSize, som anropar calculateObjectSize som sedan återkommer oändligt. Jag kunde inte gräva så långt in i vad som orsakade det, men tänkte att det kan ha något att göra med mongoose-omslagets bindningsfunktioner till schemat. Eftersom jag infogade rådata i mongoDB, när jag väl bestämde mig för att ändra bulkinsert i mongoose till ett standard javascript-objekt, försvann problemet och bulkinserts skedde korrekt. Du kanske kan göra något liknande.
I huvudsak gick min kod från
//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) {});
till
//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) {});