【问题标题】:node.js mongodb closing the connectionnode.js mongodb 关闭连接
【发布时间】:2015-05-15 07:12:37
【问题描述】:

我正在尝试将 node.js 与 mongodb 一起使用,并按照http://howtonode.org/express-mongodb 上的教程进行操作

打开连接的代码是

ArticleProvider = function(host, port) {
 this.db= new Db('node-mongo-blog', new Server(host, port, {auto_reconnect: true}, {}));
 this.db.open(function(){});
};

但是我看不到任何连接被关闭。 但是当我在 mongo 控制台上看到日志时,我可以看到这些连接打开并在一段时间后关闭。

连接会自动关闭吗?当大量客户端尝试访问服务器时会出现问题吗?应该在哪里关闭连接?

谢谢

吐槽

【问题讨论】:

    标签: node.js mongodb


    【解决方案1】:

    在该示例应用程序中,仅创建一个 ArticleProvider 对象供应用程序在处理请求时共享。该对象的构造函数打开一个数据库连接,该连接在应用程序终止之前不会关闭(这很好)。

    所以你应该看到每次启动应用程序时都会获得一个新的 mongo 连接,但无论有多少客户端访问服务器,都不会建立额外的连接。在您终止应用后不久,您应该会看到它的连接在 mongo 端消失了。

    【讨论】:

      【解决方案2】:

      node-mongodb-native 为 Db 对象提供了一个 close 方法,您可以在完成后通过调用它来关闭您的连接。

      var that = this;
      this.db.open(function(){
          // do db work here
      
          // close the connection
          that.db.close();
      });
      

      如果您不关闭连接,事件循环会保持连接打开并且您的进程不会退出。如果您正在构建一个不会终止进程的 Web 服务器,则无需关闭连接。

      node-mongodb-native 的更好参考可以在 https://github.com/mongodb/node-mongodb-native 上找到。

      【讨论】:

        【解决方案3】:

        请记住将 db.close 放在最后执行的回调中,以便在所有回调完成之前打开连接。否则,它会给出类似

        的错误
        /usr/local/lib/node_modules/mongodb/lib/utils.js:97
            process.nextTick(function() { throw err; });
                                                ^
        Error
            at Error.MongoError (/usr/local/lib/node_modules/mongodb/node_modules/mongodb-core/lib/error.js:13:17)
            at Server.destroy (/usr/local/lib/node_modules/mongodb/node_modules/mongodb-core/lib/topologies/server.js:629:47)
            at Server.close (/usr/local/lib/node_modules/mongodb/lib/server.js:344:17)
            at Db.close (/usr/local/lib/node_modules/mongodb/lib/db.js:267:19)
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2015-01-10
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2015-12-25
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多