1. Instalar y configurar Prisma1. Install and Configure Prisma
Añade Prisma a un proyecto Node.js + TypeScript existente. El CLI de Prisma se instala como dependencia de desarrollo y el cliente como dependencia de producción: Add Prisma to an existing Node.js + TypeScript project. The Prisma CLI is installed as a dev dependency and the client as a production dependency:
npm install prisma --save-dev
npm install @prisma/client
# Inicializa Prisma (crea prisma/schema.prisma y .env)
npx prisma init --datasource-provider postgresql Actualiza la variable DATABASE_URL en .env con tu cadena de conexión de PostgreSQL: Update the DATABASE_URL variable in .env with your PostgreSQL connection string:
DATABASE_URL="postgresql://user:password@localhost:5432/mydb?schema=public" 2. Definir el schema de datos2. Define the Data Schema
El archivo prisma/schema.prisma es la fuente única de verdad para la estructura de tu base de datos. Define modelos, tipos y relaciones de forma declarativa: The prisma/schema.prisma file is the single source of truth for your database structure. Define models, types and relations declaratively:
// prisma/schema.prisma
generator client {
provider = "prisma-client-js"
}
datasource db {
provider = "postgresql"
url = env("DATABASE_URL")
}
model User {
id Int @id @default(autoincrement())
email String @unique
name String
createdAt DateTime @default(now())
posts Post[]
}
model Post {
id Int @id @default(autoincrement())
title String
content String?
published Boolean @default(false)
authorId Int
author User @relation(fields: [authorId], references: [id])
createdAt DateTime @default(now())
} 3. Migraciones con Prisma Migrate3. Migrations with Prisma Migrate
Prisma Migrate genera archivos SQL a partir de los cambios en el schema y los aplica a la base de datos. Cada migración queda versionada en Git: Prisma Migrate generates SQL files from schema changes and applies them to the database. Each migration is version-controlled in Git:
# Crea y aplica una nueva migración
npx prisma migrate dev --name init
# En producción (sin generar archivos de dev)
npx prisma migrate deploy
# Regenerar el cliente después de cambios al schema
npx prisma generate El comando migrate dev también ejecuta prisma generate automáticamente, manteniendo el cliente sincronizado con el schema. The migrate dev command also runs prisma generate automatically, keeping the client in sync with the schema.
4. CRUD con Prisma Client totalmente tipado4. Fully Typed CRUD with Prisma Client
Prisma Client genera tipos TypeScript automáticamente a partir del schema, por lo que cada operación tiene autocompletado y verificación de tipos en tiempo de compilación: Prisma Client automatically generates TypeScript types from the schema, so every operation has autocomplete and compile-time type checking:
import { PrismaClient } from '@prisma/client';
const prisma = new PrismaClient();
// Crear un usuario
const user = await prisma.user.create({
data: { email: 'ana@example.com', name: 'Ana García' },
});
// Leer con relaciones incluidas
const userWithPosts = await prisma.user.findUnique({
where: { id: user.id },
include: { posts: { where: { published: true } } },
});
// Actualizar
await prisma.post.update({
where: { id: 1 },
data: { published: true },
});
// Eliminar
await prisma.user.delete({ where: { id: 1 } }); 5. Relaciones uno-a-muchos y muchos-a-muchos5. One-to-Many and Many-to-Many Relations
Prisma maneja las relaciones a través del schema. Para una relación muchos-a-muchos implícita (sin tabla de unión personalizada), basta con referenciar los modelos mutuamente: Prisma handles relations through the schema. For an implicit many-to-many relation (no custom join table), just reference the models mutually:
model Post {
id Int @id @default(autoincrement())
title String
categories Category[]
}
model Category {
id Int @id @default(autoincrement())
name String @unique
posts Post[]
}
// Consulta con muchos-a-muchos:
const postsWithCategories = await prisma.post.findMany({
include: { categories: true },
}); 6. Prisma Studio — interfaz visual de BD6. Prisma Studio — Visual Database UI
Prisma Studio es una interfaz web local que permite ver, editar y crear registros directamente en la base de datos sin necesidad de un cliente SQL externo: Prisma Studio is a local web UI that lets you view, edit and create records directly in the database without needing an external SQL client:
npx prisma studio
# Abre http://localhost:5555 Es ideal para depuración durante el desarrollo. Para producción, usa un cliente SQL real o un panel de administración dedicado, ya que Prisma Studio no tiene controles de acceso. It's ideal for debugging during development. For production, use a real SQL client or a dedicated admin panel, as Prisma Studio has no access controls.
ConclusiónConclusion
Prisma ORM elimina toda la fricción entre TypeScript y PostgreSQL: tipos automáticos, migraciones versionadas y un cliente con una DX excelente. Es la herramienta estándar para nuevos proyectos Node.js en 2026. Prisma ORM eliminates all friction between TypeScript and PostgreSQL: automatic types, versioned migrations and a client with outstanding DX. It's the standard tool for new Node.js projects in 2026.
¿Necesitas un backend Node.js completo con PostgreSQL + Prisma? Contáctame y construimos tu arquitectura de datos desde cero. Need a complete Node.js backend with PostgreSQL + Prisma? Contact me and we'll build your data architecture from scratch.