Es importante gestionar adecuadamente los errores que son generados por nuestra base de datos gestionada con Prisma cuando creamos una API para nuestra aplicación en JavaScript o TypeScript.
Como primera opción podemos usar los bloques try-catch. Podemos envolver las consultas a la base de datos en un try-catch y gestionar cualquier error que pueda ocurrir. Por ejemplo:
try {
const result = await prisma.users.create({
data: { name: 'José' }
});
} catch (err) {
console.error(err);
return res.status(500).send({ error: 'Ocurrió un error creando el usuario.' });
}
Otra opción es valerse del método catch propio de la llamada de Prisma a la consulta y gestionar en él cualquier error que suceda accediendo a la base de datos. Por ejemplo:
prisma.users.create({
data: { name: 'José' }
}).catch((err) => {
console.error(err);
return res.status(500).send({ error: 'Ocurrió un error creando el usuario.' });
});
Como última opción, podemos crear un middleware en Express para gestionar estos errores que puedan suceder en nuestras rutas. Aquí necesitaremos hacer uso de una función next() en nuestras rutas y enviar el error a través de ella. El middleware podría ser algo como:
app.use((err, req, res, next) => {
console.error(err);
return res.status(500).send({ error: err.message });
});
y en la ruta haremos algo como:
next(new Error("Ocurrió un error creando el usuario.")
Esto es todo. Espero que algunas de estas opciones te resulten de utilidad. Señalar que en Express 5 el middleware de errores promete gestionar también los errores de fuentes asíncronas.
Para saber más:
