何时关闭 MongoDB 连接

nth*_*ile 4 javascript database mongodb node.js express

对于上下文,我正在编写 ExpressJS 应用程序并使用 MongoDB 节点驱动程序mongodb.

该应用程序有时需要与远程数据库快速通信,具体取决于用户执行操作的频率。我了解应用程序不应在每次需要数据时打开和关闭连接。它应该连接一次,并且应该有一个db可用于查询的名称,例如:db.collection("users").find(...),并且所有未来的数据库调用都应该使用该 db变量。

但是如果我部署我的应用程序,我假设server.js在应用程序生命周期的开始只执行一次。这意味着在该部署的整个生命周期中只建立一次连接。

但是这些连接不会超时吗?我是否只检查dbvar 是一个打开的连接,如果不是,在拨打电话之前重新连接?

奇怪的是,我没有找到很多指南,所以我不知道正确的方法,这就是我在这里问的原因。如果我能以更好的方式问这个问题,请告诉我。

dan*_*mly 10

您不必自己管理连接。MongoClient.connect 调用附带了电池。请参阅文档:connect 方法包括一个autoReconnect(默认为 true),它将尝试保持连接可用。您还可以poolSize(默认为 5)为客户端(您可以在整个应用程序中保存和重用)提供使用 1 个以上连接的机会。

添加完整示例:

const { MongoClient } = require('mongodb');

const url = 'mongodb://localhost:27017';

MongoClient.connect(url)
    .then(client => runMyApp(client));

function runMyApp(client) {
    // Use client however you like e.g.
    client.db('users').find({})
        .then((results) => console.log(results));
}
Run Code Online (Sandbox Code Playgroud)

  • 所以我确实不需要写 `client.close()`,我只需像这样连接一次:`var client = MongoClient.connect(url, (err, client) => client );` (2认同)