【问题标题】:EADDRINUSE Node.js MongoDB Callbacks issueEADDRINUSE Node.js MongoDB 回调问题
【发布时间】:2023-03-03 18:42:01
【问题描述】:

问题:(node.js应用+mongodb Native驱动) 我有一个包含超过 60000 个 Json 文档的 JSON 文件。这些文档总是有一个创建日期和一个名为 vid 的唯一 ID。我需要插入一个 MongoDB 集合。 我需要插入新的 vid 或用另一个更新的文档更新已经存在的视频。

我已经做过的事情: https://github.com/TelmoIvo/PFC/blob/master/cfginit.js

发生了什么: 在插入/更新 500 次并收集 287 个文档后,我收到此错误: AssertionError: null == { [MongoError: connect EADDRINUSE] name : 'MongoError', message: 'connect EADDRINUSE' } 在行 assert.equal (null, err);

从我读到的内容来看,我已经使用了与 DB 的连接。但每次插入/更新后我都会关闭。

有什么建议吗?

【问题讨论】:

    标签: node.js mongodb concurrency callback connection


    【解决方案1】:

    我不会每次都打电话给MongoClient.connect。这导致大量连接一直打开和关闭,这使 mongo 过载。您应该让MongoClient 管理连接池。更改它以便存储来自 MongoClient.connect 的 db 对象,可能在您的 init 文件中添加类似

    //store this outside your init so its accessible to other functions
    //this is what you will use to access the database
    var db;
    
    //add this to your init function
    MongoClient.connect(url, function(err, database){
        db = database;
    }
    

    然后在您的函数中添加和更新使用您存储的db 对象来更新您的集合,您将不需要保持打开连接。您可以删除所有MongoClient.connect 代码并且不要调用db.close(),因为您的连接正在共享给对象,因此让MongoClient 管理它们。

    【讨论】:

      猜你喜欢
      • 2015-11-01
      • 2016-01-29
      • 2017-05-21
      • 1970-01-01
      • 2023-03-25
      • 1970-01-01
      • 2013-05-15
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多