我正在使用以下函数将一组文档添加到MongoDB集合中。
function recipesToDB(recipes) {
mongo.connect(uristring, function (err, db) {
if (err) {
console.log ('ERROR connecting to: ' + uristring + '. ' + err);
} else {
console.log ('Succeeded connected to: ' + uristring);
db.createCollection('recipes', function(err, collection) {});
var collection = db.collection('recipes');
collection.insert(recipes, {continueOnError: true}, function(err, result) {
if (err) {
console.log('ERROR:' + err);
} else {
console.log('success');
}
});
}
});
}
上面的函数可以将我的食谱数组添加到MongoDB食谱集合中。但是,当我调用该函数两次(相隔30秒)时,第二次失败并出现以下错误:
TypeError: Cannot call method 'collection' of null
答案 0 :(得分:1)
如果mongodb有mongod.lock,应该会出现此错误, 这是删除mongod.lock的方法: sudo rm mongod.lock ,必须重新启动mongodb后,即 sudo service mongod restart
答案 1 :(得分:0)
这可能是因为第二次连接不起作用。而是在更全局的位置连接一次,然后从此功能访问全局连接。
var mongoDb;
function connectToDb(done){
mongo.connect(uristring, function (err, db) {
if (err) {
console.log ('ERROR connecting to: ' + uristring + '. ' + err);
} else {
console.log ('Succeeded connected to: ' + uristring);
mongoDb = db;
done();
}
}
}
connectToDb(function(){
recipesToDB(yourRecipesObject);
});
function recipesToDB(recipes) {
mongoDb.createCollection('recipes', function(err, collection) {});
var collection = mongoDb.collection('recipes');
collection.insert(recipes, {continueOnError: true}, function(err, result) {
if (err) {
console.log('ERROR:' + err);
} else {
console.log('success');
}
});
}
});
}