在Node.js中连接MongoDB不能在for循环中工作

时间:2015-06-08 11:55:53

标签: javascript node.js mongodb asynchronous

我有一个连接我的本地mongoDB数据库的函数,但是当我尝试将它放在for循环中时,连接突然不起作用。

var connectMongo = require("./ConnectToMongoDB");
var insertDocument = require("./InsertDocument");

function spamMongoDBtest(){
      process.nextTick(function(){
            var max = 500;
            for(var i = 0; i<max;i++){
                  setTimeout(function(){
                              connectMongo(insertDocument);
                        }, 50);
            }
      });
}

为什么我会收到这个AssertionError:

  

AssertionError:null == {[MongoError:connect ECONNREFUSED] name:   'MongoError',消息:'connect ECONNREFUSED'}

connectMongo(insertDocument);是否可以使用此功能:

function spamMongoDB(){
      process.nextTick(function(){
      setInterval(function(){connectMongo(insertDocument); }, 100); });
}

2 个答案:

答案 0 :(得分:1)

您还可以分享HashMap // Getting the entry set (not a copy!) Set<Entry<String, String>> entries = map.entrySet(); // Add elements to the map afterwards map.put("abc", "def"); // Check out the entries in the collection // (magically containing the elements added after getting the collection) System.out.println(entries); // "[abc=def]" 功能吗? 也许你有太多与Mongo的开放联系。每次编写文档后尝试关闭与Mongo的连接。

您可以使用connectMongo库来限制测试的并发性。

例如:

insertDocument

答案 1 :(得分:1)

您从MongoDb收到连接错误,因为您尝试多次连接到数据库。您只需要连接到数据库一次,从那一刻起,如果已建立连接,则打开与数据库的通信。

您正在打开连接,一旦打开,您就可以与数据库进行通信。

RewriteEngine On
RewriteBase /subfolder_name/

var mongoURI = "mongodb://localhost:3030/"; var MongoDB = mongoose.connect(mongoURI).connection; MongoDB.on('error', function(err) { console.log(err.message); }); MongoDB.once('open', function() { console.log("mongodb connection open"); insertDocument; }); 功能中,您可以触发open。或者如果您想坚持使用代码,每次在for循环中打开连接时都必须关闭它。我不知道setInterval方法包含什么,但在connectMongo方法之外调用此方法后,您必须关闭连接。但是这种方法无论如何都会对服务器负责,所以我的建议是遵循提供的方法。