我正在使用以下功能将文档数组添加到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

===============>>#1 票数:1

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

===============>>#2 票数: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');
            }
         });
      }
   });
}

  ask by Joel translate from so

未解决问题?本站智能推荐:

1回复

MongoDB findOne在node.js应用程序中第二次失败...连接到以下错误:mongodb://

这是在node.js应用程序上发生的。 我试图查看hrefs数组中的食谱URL之一是否在MongoDB中存在。 以下代码在首次运行时有效,但在30秒后再次运行(setInterval)时失败。 第一次成功为数组中的每个URL返回yes或no: 三十秒后,当它第二次运行时:
1回复

node.js mongodb - collection.find()。toArray(callback) - 不调用callback

我刚刚开始使用mongodb,但是在尝试在集合上使用.find()时遇到了问题。 我创建了一个DataAccessObject,它打开一个特定的数据库,然后让你对它执行操作。 这是代码: 构造函数 : 一个getCollection函数: 保存功能: 什么似
1回复

如何删除mongodb集合中的字段?

我在mongodb中有一个数据收集,如下所示: 我想在文档ObjectId("1")的group字段中删除ObjectId("11") ObjectId("1") 。 我尝试了下面的代码: 但是失败了。 我也尝试过: 但是仍然无法删除它。 我的代码有问题
2回复

如何使用Mongodb和Node JS在多个Collection中保存数据

我在我的项目之一中使用nodeJS和mongodb。 我试图在一个保存按钮中将数据保存在多个集合中。 我用来实现此目的的代码如下: 你能告诉我上面代码有什么问题吗? 谢谢。 问候,萨罗尼
2回复

MongoDB,如何创建一个空集合?

如何在MongoDB中创建一个空集合? 我尝试过各种方法,但是它们没有用,那就是声明不同。 我知道的是,它应该在需要时自动创建一个集合,但不确定。 但是,您可以从技术上创建集合并删除其中的内容。 这是我尝试过的一个示例:
2回复

MongoDB查找带有变量的方法

尝试使用变量名搜索我的mongoDB数据库,而不是指定确切的搜索。 是否有可能做到这一点? 无论我如何尝试格式化变量,我都无法获得成功的搜索。 我正在尝试做下面的底线
1回复

具有节点索引错误的MongoDB

我目前正在使用node.js应用程序基于一组参数扫描Twitter的API,然后将这些JSON对象上载到MLab上保留的MongoDB数据库中。 我已经连接到数据库,没有问题,但是我的代码在崩溃前只会上传一个推文。 这是错误消息: 似乎与我在数据库中使用的键有关? 如何编写我的代码
2回复

MongoDB + Express:如何使用db.collection()。findOne()或.find()验证登录凭据?

我有一个POST请求,其中一个用户凭据作为登录页面中的对象,并被传递给API服务器,如下所示: API Server会像这样接收它: 要么 因此,使用传入的登录凭据,在API服务器内部,我想搜索我的'users'数据库以查看是否与传入'users'数据库匹配。但在这两种情
1回复

在MongoDB中检查文档项并将其添加到集合中的问题

我是Nodejs的新手,正在尝试使用#标签创建视频。 数据库中已经存储了标签,并且用户将创建标签(将在提交视频时添加标签)。 例如,我添加了2个以上的#标签,下面的代码适用于2种情况: 如果数据库中没有存储任何标签,它将成功创建所有标签并将其添加到视频中 如果主题标签已存在于数据库中,则它
1回复

使用节点管理与mongoDB的连接的正确方法是什么?

我正在使用node.js和mongoDB。 现在,对于我的测试应用程序,与数据库的连接位于主节点文件中,但是我认为这是错误的做法。 我想要/需要的:一种安全的方法(即不在用户可以访问的文件中存储密码),仅在需要时才连接到db。 例如:我想要几个管理页面(用户,组等)。 每个页面都应连