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.
0 Comentarios
Si desea contactar comigo, lo puede hacer atravez deste formulario gracias