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

114
Vistas
¿Cómo puedo manejar los errores de tiempo de ejecución en la aplicación Express?

Soy nuevo en express + node.js, así que escribí una API de descanso usando mongoose. ¿Cuál es la mejor manera de manejar errores de tiempo de ejecución como errores de base de datos, etc.?

He leído en la documentación expresa que puede tener una function(err, res, req, next) para manejar estos errores, y puede llamar a esta función solo llamando a next(err) . Está bien, así que imagina que tienes un modelo Moongose User y en un controlador escribes esta función:

 const find = (email, password) => { User.find({ email: email }, (err, doc) => { if (err) { // handle error } return doc; }); };

Luego, tienes en otro archivo un controlador para una ruta:

 router.get('/users', (req, res) => { userController.find(req.body.email); });

Entonces, en este punto, puede manejar el error mongo escribiendo throw(err) en el modelo y usando try/catch en el controlador para luego llamar a next(err) , ¿verdad? Pero he leído que usar try/catch en JavaScript no es una buena práctica porque crea un nuevo contexto de ejecución, etc.

¿Cuál es la mejor manera de manejar estos errores en Express?

about 4 years ago · Santiago Trujillo
1 Respuestas
Responde la pregunta

0

Te sugiero que uses promesas. No solo hace que su código sea más limpio, sino que también el manejo de errores es mucho más fácil. Como referencia, puede visitar this o this .

Si está utilizando mongoose, puede agregar su propia biblioteca de promesa.

 const mongoose = require('mongoose'); mongoose.connect(uri); // plug in the promise library: mongoose.Promise = global.Promise; mongoose.connection.on('error', (err) => { console.error(`Mongoose connection error: ${err}`) process.exit(1) })

Y úsalo como a continuación:

En el controlador:

 const find = (email) => { var userQuery = User.find({ email: email }); return userQuery.exec(); };

En enrutador:

 router.get('/users', (req, res) => { userController.find(req.body.email).then(function(docs){ // Send your response }).then(null, function(err){ //Handle Error }); });
about 4 years ago · Santiago Trujillo Denunciar
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