Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

188
Views
¿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
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!