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