如何避免关闭MongoDB连接并保持Node应用程序畅通

时间:2019-06-06 13:40:59

标签: javascript node.js mongodb

我的问题是我写了很多数据(大约16,000个条目),每个条目都上传到我的Mongo数据库中,因为我在for循环中遍历这些数据,因此无法打开和每次迭代都关闭一个连接-这会使我的应用程序崩溃。

MongoClient.connect(url, function(err, db) {
    if (err) throw err;
    var dbo = db.db("mydatabase");
    //run sql query to get data
    for(result in sqldata) {

    myobj = {Number: sqldata[result].Num} //<--- this for loop produces 16000 entries

    dbo.collection("customers").insertOne(myobj, function(err, res) {
      if (err) throw err;
      console.log("1 document inserted");
      db.close(); //<--- this is the issue
});
}

});

如果我使用db.close(),则会导致我的应用程序崩溃,因为我没有将连接恢复到循环内部。

如果我将db.close()移出循环,它将上载所有文档,但不会继续处理脚本的其余部分,只会停顿。

这让我很沮丧,因为我是JS新手,我们将不胜感激

谢谢。

1 个答案:

答案 0 :(得分:-2)

它“死机”的原因可能是如果未以异步方式调用您的方法。然后它阻塞了线程。同上,可能您应该将db.close()放在循环之外,但以异步方式调用整个方法。

我想这将解决问题。