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

358
Views
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 answers
Answer question

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 Report

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 Report

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 Report
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!