我看到了很多有关MongoDB Atlas的警报的帖子和文章(“连接%的配置限制已超过80”),但是无法弄清在我的Next.js应用程序中如何解决它。
我在处理程序函数外创建了我的数据库连接。我使用了一个名为withDatabase.js
的中间件:
const client = new MongoClient(process.env.MONGODB_URI, {
useNewUrlParser: true,
useUnifiedTopology: true
});
const addDbToRequest = (handler, req, res) => {
req.db = req.connection.db("MYDBNAME");
return handler(req, res);
};
const withDatabase = handler => async (req, res) => {
if (!client.isConnected()) {
await client.connect();
}
req.connection = client;
return addDbToRequest(handler, req, res);
};
export default withDatabase;
这个中间件包装了API端点处理程序。
现在,如果我在每个API处理程序完成时关闭连接,就像这样:
const { connection } = req;
if (connection) {
connection.close();
}
接着,我针对同一个API处理程序进行第二个请求时出现了错误:
MongoError: Topology is closed, please connect
如果我没有关闭连接,使用一段时间后就会收到如下邮件提醒:
“警告:您的数据库连接池已满,请检查并处理。"
Connections % of configured limit has gone above 80
如何在Next.js应用程序中与MongoDB Atlas合作的最佳实践是什么?
谢谢!