sql >> データベース >  >> NoSQL >> MongoDB

マングース-RangeError:最大呼び出しスタックサイズを超えました

    私はこれと同じ問題を抱えていて、マングースのソースコード(バージョン3.8.14)を調べ始めました。最終的に、それは私を

    内のこの行に導きました
    • mongoose / node_modules / mongodb / lib / mongodb / collection /core.js->挿入 (...)-> insertWithWriteCommands (...)->
    • mongoose / node_modules / mongodb / lib / mongodb / collection / batch / ordered.js-> bullk.insert(docs [i]) -> addToOperationsList(...) -> bson.calculateObjectSize(document、false);

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

    どうやら、これはBSON.calculateObjectSizeを呼び出し、calculateObjectSizeを呼び出し、それが無限に繰り返されます。その原因を深く掘り下げることはできませんでしたが、マングースラッパーのスキーマへのバインディング関数と関係があるのではないかと考えました。生データを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を使用したSparkStructuredStreamingの動的ルックアップ

    2. PHPスタートアップダイナミックライブラリphp_mongo.dllを読み込めません

    3. 文字列をmongodbで日付に変換する

    4. redisのpubsubタイムアウト機能を実装するにはどうすればよいですか?