Un controlador es una función que se encarga de responder a una ruta. Es donde escribimos la lógica de lo que queremos que pase cuando alguien hace una petición a nuestra API.
👉 Por ejemplo: si alguien entra a /categorias, el controlador es el que busca las categorías en la base de datos y las devuelve.
Creamos un archivo en la carpeta controllers/
Ejemplo: categorias.controller.js
Importamos la conexión de Prisma
import { conexion } from "../utils/conexion.js";
Creamos una función asíncrona que recibe req y res
export async function mostrarCategorias(req, res) {
try {
const categorias = await conexion.categorias.findMany();
res.json(categorias);
} catch (error) {
console.error(error);
res.status(500).json({ error: "Error al obtener categorías" });
}
}
| Elemento | ¿Qué significa? |
|---|---|
conexion.categorias |
Accede al modelo categorias definido por Prisma |
.findMany() |
Busca todas las filas (equivale a SELECT * FROM categorias) |
.create({ data: { ... } }) |
Inserta un nuevo registro en la tabla |
.findUnique({ where: { id } }) |
Busca una sola fila por su ID (clave primaria) |
.update({ where, data }) |
Actualiza un registro |
.delete({ where }) |
Elimina un registro |
| Acción | SQL tradicional | Prisma |
|---|---|---|
| Obtener todo | SELECT * FROM categorias; |
conexion.categorias.findMany() |
| Obtener por ID | SELECT * FROM categorias WHERE id = 1; |
conexion.categorias.findUnique({ where: { id: 1 } }) |
| Insertar | INSERT INTO categorias ... |
conexion.categorias.create({ data: { ... } }) |
| Actualizar | UPDATE categorias SET ... WHERE id=1; |
conexion.categorias.update({ where, data }) |
| Eliminar | DELETE FROM categorias WHERE id=1; |
conexion.categorias.delete({ where: { id: 1 } }) |
✅ Con Prisma, no necesitas escribir SQL. Solo usas métodos claros como .findMany(), .create(), etc.
try...catch para atrapar errores y evitar que el servidor se caiga.req.body) para evitar errores en la base de datos.// categorias.controller.js
import { conexion } from "../utils/conexion.js";
export async function mostrarCategorias(req, res) {
try {
const categorias = await conexion.categorias.findMany();
res.json(categorias);
} catch (error) {
res.status(500).json({ error: "No se pudieron obtener las categorías" });
}
}