Saltar al contenidoPedro Farbo
Lección 9 / 2560 min

Prisma ORM

Prisma ORM

Prisma es un ORM moderno que facilita mucho el trabajo con bases de datos.

Instalación

bash
npm install prisma @prisma/clientnpx prisma init

Configuración de Conexión

env
# .envDATABASE_URL="postgresql://postgres:postgres@localhost:5432/ecommerce"

Definiendo el Schema

prisma
// prisma/schema.prismagenerator client {  provider = "prisma-client-js"} datasource db {  provider = "postgresql"  url      = env("DATABASE_URL")} model User {  id        String   @id @default(uuid())  email     String   @unique  name      String  password  String  role      Role     @default(USER)  createdAt DateTime @default(now())  updatedAt DateTime @updatedAt} enum Role {  USER  ADMIN} model Product {  id          String   @id @default(uuid())  name        String  slug        String   @unique  description String?  price       Decimal  @db.Decimal(10, 2)  stock       Int      @default(0)  category    Category @relation(fields: [categoryId], references: [id])  categoryId  String  createdAt   DateTime @default(now())  updatedAt   DateTime @updatedAt} model Category {  id       String    @id @default(uuid())  name     String    @unique  slug     String    @unique  products Product[]}

Ejecutando Migraciones

bash
# Crear migraciónnpx prisma migrate dev --name init # Generar clientenpx prisma generate # Ver base de datos (GUI)npx prisma studio

Setup del Prisma Client

typescript
// src/config/database.tsimport { PrismaClient } from '@prisma/client'; export const prisma = new PrismaClient({  log: ['query', 'error', 'warn'],});

Consultas Básicas

typescript
// Crearconst user = await prisma.user.create({  data: { email: 'juan@email.com', name: 'Juan', password: 'hash' }}); // Buscar muchosconst users = await prisma.user.findMany(); // Buscar únicoconst user = await prisma.user.findUnique({  where: { email: 'juan@email.com' }}); // Actualizarconst updated = await prisma.user.update({  where: { id: '123' },  data: { name: 'Juan García' }}); // Eliminarawait prisma.user.delete({ where: { id: '123' } });

Consultas con Relaciones

typescript
// Incluir relacionesconst product = await prisma.product.findUnique({  where: { id: '123' },  include: { category: true }}); // Seleccionar campos específicosconst products = await prisma.product.findMany({  select: { id: true, name: true, price: true }});

Resumen

  • ✅ Prisma configurado con PostgreSQL
  • ✅ Schema definido con modelos
  • ✅ Migraciones creadas
  • ✅ Consultas CRUD básicas

Próxima clase: CRUD Completo! 🚀

¿Te gustó el contenido? ¡Tu contribución ayuda a mantener todo online y gratuito!

PIX:0737160d-e98f-4a65-8392-5dba70e7ff3e