Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

182
Vistas
¿Cómo lidiar con los errores en la configuración del servicio/controlador Express?

Tengo un desafío en el que realmente no puedo tomar una decisión sobre cómo lidiar con las respuestas HTTP/Errores en mis servicios y controladores en mi Express API. Mi objetivo es que los servicios sean responsables de una sola cosa y no se ocupen de HTTP en absoluto. Al menos ese es mi pensamiento.

Me encantaría recibir comentarios sobre mi enfoque...

He agregado middlewares de error general:

 const errorResponder = (error, req, res, next) => { if (error.statusCode && error.message) { return res.status(error.statusCode).send(error.message); } if (error.statusCode) { return res.status(error.statusCode).send(); } if (error.message) { return res.status(500).send(error.message); } return next(error); // Forward if above is't triggered }; const errorFailSafe = (error, req, res, next) => { console.log("Fail safe"); res.status(500).send("Something went wrong, we are digging into it!"); };

Y luego, en mi controlador, desenvuelvo lo que necesito de la solicitud y lo envío a un servicio. Luego envío la respuesta al cliente.

 findUser: async (req,res,next) => { const userId = req.params.userId; try { // Call service const user = await UserService.findOne(userId); // Send user back to client res.status(200).send(user); } catch (error) { return next(error) } }

En mi servicio usando Sequelize:

 findOne: async (userId) => { try { let user = await db.users.findByPk(userId); if (user == null) { throw new NotFound("User not found"); } return user; } catch (error) { throw error; } };

El error NotFound es una clase de error personalizada que extiende Error.

 class NotFound extends Error { constructor(message) { super(message); this.statusCode = 404; } } module.exports = NotFound ;

Aquí rompo un poco la separación haciendo que el Servicio se ocupe de HTTP llamando a NotFound. Podría cambiar esto para que sea el controlador el que haga la verificación. ¿Sería eso mejor?

Cualquier comentario sería apreciado. :)

about 4 years ago · Santiago Gelvez
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda