0

ネイティブ ノード ライブラリを使用して Mongo にオブジェクトを挿入しようとしています。1620 個のオブジェクトを持つ配列プロパティを持つオブジェクトがあります。ドキュメントでは、mongo は最大 100 レベルのネストをサポートしていると書かれていますが、私は実行していません。配列内のオブジェクトは単なるオブジェクトであり、配列はありません。すべてのアイテムを含むドキュメント全体のサイズはわずか 456 KB です。配列を 788 オブジェクトに制限すると、それらはデータベースに保存されますが、アプリがクラッシュします。ノードのネイティブ mongo ライブラリで問題が発生していますか? データベースの設定がありませんか?

var droplist = convertOptionList(data);

MongoClient.connect('mongodb://127.0.0.1:27017/test', function(err, db) {
  if(err) {console.log('error'); throw err;}

  var collection = db.collection('droplist');

  collection.insert(droplist, function(err, objects) {
    if(err) {
      console.log('error');
      throw err;
    }
    //never see this message. app crashes but with fewer items the query passes
    console.log("A-Ok");
  });
  db.close();
});

アップデート

コードの作業バージョン。挿入のためのコールバック内に db.close() を移動し、オブジェクトがすべて挿入される前に db.close が呼び出されるのを防ぐためのわずかな変更。

var droplist = convertOptionList(data);

MongoClient.connect('mongodb://127.0.0.1:27017/test', function(err, db) {
  if(err) {console.log('error'); throw err;}

  var collection = db.collection('droplist');

  collection.insert(droplist, function(err, objects) {
    if(err) {
      console.log('error');
      throw err;
    }
    db.close();
  });
});
4

1 に答える 1

0

Rookie mistake. I put my db.close() outside of my callback so the connection was closing before the query could run/finish. Moved my db.close() into the callback and everything works now.

于 2013-09-14T14:23:00.837 に答える