• Jobs
  • About Us
  • professionals
    • Home
    • Jobs
    • Courses and challenges
  • business
    • Home
    • Post vacancy
    • Our process
    • Pricing
    • Assessments
    • Payroll
    • Blog
    • Sales
    • Salary Calculator

0

363
Views
Cómo cerrar una conexión MongoDB en nodejs

Tengo el siguiente método para conectarme a MongoDB:

 import { Db, MongoClient } from 'mongodb'; let cachedConnection: { client: MongoClient; db: Db } | null = null; export async function connectToDatabase(mongoUri?: string, database?: string) { if (!mongoUri) { throw new Error( 'Please define the MONGO_URI environment variable inside .env.local' ); } if (!database) { throw new Error( 'Please define the DATABASE environment variable inside .env.local' ); } if (cachedConnection) return cachedConnection; cachedConnection = await MongoClient.connect(mongoUri, { useNewUrlParser: true, useUnifiedTopology: true, }).then((client) => ({ client, db: client.db(database), })); return cachedConnection!; }

Y lo uso de la siguiente manera:

 const { db, client } = await connectToDatabase( config.URI, config.USERS_DATABASE ); const user = await db .collection(config.USERS_COLLECTION) .findOne({ _id: new ObjectId(userId) });

Parece estar bien, pero no lo está. El problema de este método es que no cierra las conexiones. Por ejemplo, tengo un clúster en Atlas, y las conexiones siguen creciendo hasta 500. Después de eso, ya no sirve, entra en tiempo de espera y luego mi backend falla.

Para resolver esto, probé con client.close() justo antes de devolver la respuesta a la interfaz.

Me arroja un error que dice MongoError: Topology is closed, please connect . ¿Creo que cierra la conexión antes de que termine? ¿Es correcto? Incluso si lo pongo después de que respondiera el DB.

esta es la captura de pantalla del error:

ingrese la descripción de la imagen aquí

¿Crees que hay una manera de resolver esto o simplemente tengo que hacer todo el procedimiento en cada archivo que necesito para conectarme a mongo? ¿Tú también crees que hice algo mal?

about 3 years ago · Juan Pablo Isaza
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Our process Sales
Legal
Terms and conditions Privacy policy
© 2025 PeakU Inc. All Rights Reserved.

Andres GPT

Recommend me some offers
I have an error