javascript / intermediate
Snippet
Das Singleton-Muster für Datenbankverbindungen
In der Entwicklung lädt Next.js Module häufig neu. Ohne das Singleton-Muster würde jeder Hot-Reload eine neue Datenbankverbindung erstellen und schließlich den Pool erschöpfen. Dieses Muster speichert die Instanz global.
snippet.js
javascript
1
2
3
4
5
6
7
8
9
10
11
12
13
import { PrismaClient } from '@prisma/client';const prismaClientSingleton = () => new PrismaClient();const globalForPrisma = globalThis as unknown as {prisma: PrismaClient | undefined;};const prisma = globalForPrisma.prisma ??= prismaClientSingleton();export default prisma;if (process.env.NODE_ENV !== 'production') globalForPrisma.prisma = prisma;
nextjs
Erklärung
1
globalThis
Ein Standardweg, um in verschiedenen Umgebungen (Node.js/Browser) auf den globalen Scope zuzugreifen.
2
??=
Der logische Nullish-Zuweisungsoperator, der nur zuweist, wenn die Variable null oder undefined ist.