Browse Source

refactor: improve MongoDB client connection handling and error messages

Code_Uwe 2 weeks ago
parent
commit
624f266ce0
1 changed files with 15 additions and 13 deletions
  1. 15 13
      lib/db.js

+ 15 - 13
lib/db.js

@@ -3,24 +3,26 @@ import { MongoClient } from "mongodb";
 
 const uri = process.env.MONGODB_URI;
 
-if (!uri) {
-	throw new Error("Bitte setze MONGODB_URI in .env.docker / .env.local");
-}
-
-// Wir cachen die Verbindung über globalThis, damit Next.js nicht bei jedem Request
-// eine neue Verbindung aufmacht (wichtig im Dev & bei Hot Reload).
 let client;
 let clientPromise;
 
-if (!global._mongoClientPromise) {
-	client = new MongoClient(uri);
-	global._mongoClientPromise = client.connect();
-}
+function getClientPromise() {
+	if (!uri) {
+		// Jetzt meckern wir erst beim tatsächlichen Zugriff auf die DB
+		throw new Error("MONGODB_URI ist nicht gesetzt (Env prüfen)");
+	}
 
-clientPromise = global._mongoClientPromise;
+	if (!clientPromise) {
+		// In Dev-Umgebungen könnte man global._mongoClientPromise nutzen;
+		// auf dem Server reicht ein einfacher Singleton.
+		client = new MongoClient(uri);
+		clientPromise = client.connect();
+	}
+
+	return clientPromise;
+}
 
 export async function getDb() {
-	const client = await clientPromise;
-	// Wenn im URI ein DB-Name steht (/rhl-lieferscheine), nimmt der Client den automatisch.
+	const client = await getClientPromise();
 	return client.db();
 }