Business
Jobs
  • About Us
  • Solutions
    • Candidates
      Highly qualified candidates in 48h.
    • Assessments
      500+ technical and psychological assessments, plus anti-fraud system.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Pay in 15+ LATAM countries without setting up a local entity.
  • Pricing
  • Jobs

0

473
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 4 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
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!