对于上下文,我正在编写ExpressJS应用并使用MongoDB节点驱动程序mongodb
。
应用程序有时需要快速与远程数据库对话,这取决于用户执行操作的频率。我知道该应用程序每次需要数据时都不应打开和关闭连接。它应该连接一次,并且应该有一个名为db
的东西可用于查询,例如:db.collection("users").find(...)
,并且以后所有的数据库调用都应仅使用该db
变量。>
但是,如果我部署我的应用程序,我假设server.js
在应用程序生命周期开始时仅执行一次。这将意味着在该部署的整个生命周期中仅建立一次连接。
但是这些连接不超时吗?我是否只是检查db
var是否为打开的连接,如果不是,则在拨打电话之前重新连接?
令人惊讶的是,我没有找到很多指南,所以我不知道正确的方法,这就是为什么我在这里问。请让我知道是否可以更好地询问这个问题。
答案 0 :(得分:1)
您不必自己管理连接。 MongoClient.connect调用随附电池。请参见the docs:connect方法包括一个autoReconnect
(默认为true),它将尝试保持连接可用。您还可以使用poolSize
(默认值为5)为客户端(您可以在整个应用中保存和重复使用)提供使用多个连接的机会。
添加完整示例:
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));
}