MongoDB
 sql >> Base de données >  >> NoSQL >> MongoDB

MongoError :la topologie a été détruite lors de l'utilisation avec l'API NextJs

Le problème que vous rencontrez provient de cette ligne :

  await client.close();

À partir de la documentation :

Signification lorsque vous close le client, toutes les autres connexions ouvertes se ferment également. Dans votre cas, #2 et #4 commencent à s'exécuter peu de temps après #1 et #3 (mais avant qu'ils ne soient terminés), et vous fermez la connexion sur eux alors qu'ils sont encore en cours d'exécution.

Également à partir de la documentation :

Ce serait une bonne pratique d'avoir une gestion d'état pour vos fonctions sans état (je sais), avoir un service de connexion qui donne juste la connexion à vos fonctions sans état, il serait également plus facile de gérer les erreurs de cette façon.

En savoir plus à ce sujet ici et dans la documentation du pilote nodejs

Une solution rapide (et très sous-optimale) à votre problème serait de définir la connexion au sein de la fonction comme suit :

// remove the definition from here

export default async (req, res) => {
     // and move it here
     const client = new MongoClient(process.env.DB_URI, {});
     await client.connect();

      .....

     await client.close();
};