馃捑 Conexi贸n a bases de datos (MongoDB / Prisma)

Next.js MongoDB Prisma

17 - 馃捑 Conexi贸n a bases de datos (MongoDB / Prisma)

Aprende a conectar tu aplicaci贸n Next.js con bases de datos usando MongoDB y Prisma, y a realizar operaciones CRUD de manera segura y eficiente.


馃攳 ¿Por qu茅 usar MongoDB y Prisma?

  • MongoDB: Base de datos NoSQL flexible y escalable, ideal para proyectos modernos.
  • Prisma: ORM que simplifica la interacci贸n con la base de datos y genera tipado seguro en TypeScript.
馃挕 Con Prisma y MongoDB puedes crear, leer, actualizar y eliminar datos f谩cilmente desde tus rutas API en Next.js.

Instalaci贸n:

npm install @prisma/client
npm install prisma --save-dev
npm install mongodb
    

⚙️ Configuraci贸n de Prisma

Inicializa Prisma en tu proyecto Next.js:

npx prisma init

Esto crear谩 la carpeta prisma/ con un archivo schema.prisma donde definir谩s tu modelo de datos.

// prisma/schema.prisma
generator client {
  provider = "prisma-client-js"
}

datasource db {
  provider = "mongodb"
  url      = env("DATABASE_URL")
}

model Usuario {
  id       String @id @map("_id") @default(auto()) @db.ObjectId
  nombre   String
  email    String @unique
  creadoEn DateTime @default(now())
}
      

馃敆 Conexi贸n y operaciones CRUD

En Next.js, podemos usar API Routes para manejar la comunicaci贸n con la base de datos.

// app/api/usuarios/route.js
import { PrismaClient } from '@prisma/client';

const prisma = new PrismaClient();

export async function GET() {
  const usuarios = await prisma.usuario.findMany();
  return new Response(JSON.stringify(usuarios), { status: 200 });
}

export async function POST(request) {
  const data = await request.json();
  const nuevoUsuario = await prisma.usuario.create({
    data: {
      nombre: data.nombre,
      email: data.email
    }
  });
  return new Response(JSON.stringify(nuevoUsuario), { status: 201 });
}
      

馃挕 Explicaci贸n:

  • PrismaClient: Permite interactuar con la base de datos desde Next.js.
  • findMany: Recupera todos los registros de la colecci贸n Usuario.
  • create: Inserta un nuevo documento en MongoDB.
  • API Routes: Proporcionan endpoints para manejar peticiones GET y POST.

馃摗 Probando la API

Podemos hacer peticiones desde el cliente usando fetch:

async function obtenerUsuarios() {
  const res = await fetch('/api/usuarios');
  const data = await res.json();
  console.log(data);
}

async function agregarUsuario() {
  const res = await fetch('/api/usuarios', {
    method: 'POST',
    headers: { 'Content-Type': 'application/json' },
    body: JSON.stringify({ nombre: "Jorge", email: "jorge@example.com" })
  });
  const data = await res.json();
  console.log(data);
}
      

✅ Resumen

  • 馃捑 Prisma + MongoDB permite manejar datos de forma segura y tipada en Next.js.
  • ⚡ Las API Routes funcionan como endpoints para operaciones CRUD.
  • 馃敆 Se integra f谩cilmente con fetch o librer铆as como Axios desde el frontend.
  • 馃挕 Ideal para proyectos que necesitan persistencia de datos, autenticaci贸n o dashboards din谩micos.

Publicar un comentario

0 Comentarios