Я видел много постов и статей об этом предупреждении в 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
Как лучше всего работать с MongoDB Atlas в приложении Next. js?
Спасибо!