【发布时间】:2021-03-25 04:59:52
【问题描述】:
我在 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 的最佳实践是什么?
谢谢!
【问题讨论】:
标签: mongodb next.js mongodb-atlas