我正在尝试使用本机节点库在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();
});
});
答案 0 :(得分:0)
菜鸟错误。我把db.close()放在我的回调之外,所以在查询运行/完成之前连接正在关闭。将我的db.close()移动到回调中,现在一切正常。