Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

181
Visualizações
¿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 à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda