0

我正在尝试使用本机节点库在 Mongo 中插入一个对象。我有一个对象,它有一个包含 1620 个对象的数组属性。在文档中,它说 mongo 支持嵌套多达 100 个我没有遇到的级别。数组中的对象只是对象,它们没有任何数组。包含所有项目的总文档大小仅为 456Kb。如果我将数组限制为 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

菜鸟失误。我把我的 db.close() 放在我的回调之外,所以连接在查询可以运行/完成之前关闭。将我的 db.close() 移到回调中,现在一切正常。

于 2013-09-14T14:23:00.837 回答