MongoDB
 sql >> база данни >  >> NoSQL >> MongoDB

Mongoose - RangeError:Максималният размер на стека от обаждания е превишен

Имах същия проблем и започнах да ровя из изходния код на mongoose (версия 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, който извиква callObjectSize, който след това се повтаря безкрайно. Не успях да разровя толкова далеч какво го е причинило, но реших, че може да има нещо общо с функциите за свързване на обвивката на mongoose към Схемата. Тъй като вмъквах необработени данни в mongoDB, след като реших да променя груповото вмъкване в mongoose на стандартен javascript обект, проблемът изчезна и груповите вмъквания се случиха правилно. Може да успеете да направите нещо подобно.

По същество кодът ми беше от

//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) {});

до

//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) {});


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Как правилно да използвате повторно връзката с Mongodb в приложението и модулите на NodeJs

  2. Не може да се свърже с MongoDB поради грешен URI

  3. Разстояние за печат на MongoDB между две точки

  4. Изберете дължина на низа в mongodb

  5. Как ефективно да изтриете документи чрез заявка в mongo?