MongoDB
 sql >> Datenbank >  >> NoSQL >> MongoDB

MongoError:Die Topologie wurde während der Verwendung mit NextJs api zerstört

Das Problem, das Sie haben, kommt von dieser Zeile:

  await client.close();

Aus der Dokumentation:

Das heißt, wenn Sie close des Clients, alle anderen offenen Verbindungen werden ebenfalls geschlossen. In Ihrem Fall beginnen #2 und #4 kurz nach #1 und #3 zu laufen (aber bevor sie fertig sind), und Sie schließen die Verbindung auf ihnen, während sie noch laufen.

Auch aus der Dokumentation:

Es wäre eine bewährte Methode, eine Zustandsverwaltung für Ihre zustandslosen Funktionen zu haben (ich weiß), einen Verbindungsdienst zu haben, der Ihren zustandslosen Funktionen nur die Verbindung gibt, es wäre auch einfacher, Fehler auf diese Weise zu verwalten.

Lesen Sie mehr darüber hier und in der nodejs-Treiberdokumentation

Eine schnelle (und sehr suboptimale) Lösung für Ihr Problem wäre, die Verbindung innerhalb der Funktion wie folgt zu definieren:

// 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();
};