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

354
Vistas
Express JS usa la función asíncrona en las solicitudes
app.use(async function(req, res, next) { try { var myres = await new Promise((resolve, reject) => { mysql_connection.query("select * from Users;", (err, rows) => { if (err) { reject(err); } else { resolve(rows); } }); }); } catch (error) { console.log(error); } });

La pregunta es. usar la función asíncrona para poder usar la espera para consultas de base de datos está bien? Me temo que puede causar algunos problemas en el lado de expressjs.

over 4 years ago · Santiago Trujillo
3 Respuestas
Responde la pregunta

0

async..await es azúcar sintáctico para promesas, y una promesa es solo un patrón que se basa en devoluciones de llamada. El uso de funciones async es aceptable siempre que el entorno las admita. async..await es compatible desde Node.js 7.6.0.

La función async siempre devuelve una promesa. Siempre que este valor de retorno implícito no cause problemas, está perfectamente bien en todas partes, incluido Express. No importa si se usa para consultas de bases de datos o cualquier otra cosa.

A menos que la API admita promesas, los errores deben manejarse por completo en la función async . El cuerpo de la función debe envolverse con try..catch para descartar rechazos no controlados que pueden generar excepciones en futuras versiones de Node.

El código original no contiene next llamadas y solo suprime un error. Como regla general, el middleware async debe estructurarse así:

 app.use(async function(req, res, next) { try { ... next(); } catch (error) { next(error); } });
over 4 years ago · Santiago Trujillo Denunciar

0

Async await se puede usar sin problemas para consultas de bases de datos. Puede usar Try Catch, sin embargo, hay una solución más elegante que le permite usar el middleware de manejo de errores que ofrece Express:

Envuelves tu middleware con esta función:

 const asyncMiddleware = fn => (req, res, next) => { Promise.resolve(fn(req, res, next)) .catch(next); };

Entonces puedes usarlo de la siguiente manera:

 const asyncMiddleware = require('./utils/asyncMiddleware'); router.get('/', asyncMiddleware(async (req, res, next) => { /* if there is an error thrown in getUserFromDb, asyncMiddleware will pass it to next() and express will handle the error; */ const user = await getUserFromDb({ id: req.params.id }) res.json(user); }));

Si se produce un error, el control se entregará al middleware de manejo de errores, que es un middlware que tiene cuatro argumentos como este:

 app.use(function (err, req, res, next) { // your error code })
over 4 years ago · Santiago Trujillo Denunciar

0

También puede importar en su server.ts o server.js el https://www.npmjs.com/package/express-async-errors que maneja errores asíncronos en express

 yarn add express-async-errors

E impórtelo import 'express-async-errors'; en su archivo principal.

over 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