Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/365.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript MongoDB错误第二次调用函数:TypeError:无法调用方法';收集';空的_Javascript_Node.js_Mongodb_Database - Fatal编程技术网

Javascript MongoDB错误第二次调用函数:TypeError:无法调用方法';收集';空的

Javascript MongoDB错误第二次调用函数:TypeError:无法调用方法';收集';空的,javascript,node.js,mongodb,database,Javascript,Node.js,Mongodb,Database,我使用以下函数将文档数组添加到MongoDB集合中 function recipesToDB(recipes) { mongo.connect(uristring, function (err, db) { if (err) { console.log ('ERROR connecting to: ' + uristring + '. ' + err); } else { console.log ('Succeeded conne

我使用以下函数将文档数组添加到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');
            }
         });
      }
   });
}
上述函数用于将my recipes数组添加到MongoDB recipes集合。但是,当我调用该函数两次(间隔30秒)时,它第二次失败,出现以下错误:

TypeError: Cannot call method 'collection' of null

这可能是因为第二次连接不起作用。相反,请在更全局的位置连接一次,然后从此功能访问全局连接

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');
            }
         });
      }
   });
}

如果mongodb有mongod.lock,则会出现此错误,
这是删除mongod.lock的方法:sudo rm mongod.lock,在您必须重新启动mongodb之后,即sudo服务mongod restart

为什么我不能标记此站点上的每个人!!