API en Next.js · Paso 8 de 9
Generar y reutilizar el cliente de Prisma
Cliente tipado, una sola instancia en desarrollo y los comandos generate y Studio.
Tras prisma migrate dev o prisma generate, Prisma expone un cliente en @prisma/client: métodos como prisma.producto.findMany() con autocompletado y tipos alineados con schema.prisma.
Una sola instancia en desarrollo
En Next.js, el servidor de desarrollo recarga módulos a menudo. Si haces new PrismaClient() en cada import, acabas con demasiadas conexiones a SQLite. El patrón habitual es reutilizar una instancia global en memoria (solo en desarrollo):
import { PrismaClient } from "@prisma/client"
const globalForPrisma = globalThis as unknown as {
prisma: PrismaClient | undefined
}
export const prisma = globalForPrisma.prisma ?? new PrismaClient()
if (process.env.NODE_ENV !== "production") {
globalForPrisma.prisma = prisma
}
Guarda esto como lib/prisma.ts (o lib/db.ts, si prefieres ese nombre: lo importante es un solo sitio desde el que exportas prisma).
Qué resuelve cada pieza
PrismaClient— clase generada a partir de tus modelos.globalThis— en el navegador no aplica; en el runtime de Node del servidor de Next, evita duplicar el cliente entre recargas.- Comprobar
NODE_ENV— en producción suele bastar una instancia por proceso; el patrón anterior no suele hacer daño y mantien el mismo archivo en todos los entornos.
Comandos que volverás a usar
npx prisma generate— regenera el cliente cuando cambiasschema.prisma(a veces ya lo hacemigrate dev).npx prisma studio— interfaz web para ver y editar filas; útil para comprobar que el CRUD escribe bien.
Con prisma importable desde @/lib/prisma, ya puedes llamar a la base desde una ruta de API. La siguiente lección hace el primer CRUD sobre Producto: listar y crear sin salir de app/api.
Cuando hayas leído el texto, marca la lección para seguir el progreso.