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

348
Vistas
¿Cómo devolver el resultado de la función Node.js mysql2 query() en un código que no es Promise?

He escrito una función basada en Promise que funciona de la manera que pretendía, pero no pude escribir una función que funcione solo con devoluciones de llamada. He creado el siguiente código que está destinado a devolver el resultado de una consulta de selección:

 function getUserByEmail(email) { let sql = `SELECT * FROM userlogin WHERE Username = ?`; con.query(sql, email, (err, result) => { if (!err) { return result[0]; // callback returns the result } else { return err; } }) }

En el caso del código anterior, la función devuelve indefinido, porque la función de orden superior no devuelve nada, pero la devolución de llamada sí.

Luego probé la función a continuación, pero en este caso con.query() devuelve un objeto que no entiendo y no tiene el resultado de la consulta en ninguna parte para encontrarlo en sus atributos.

 function getUserByEmail(email) { let sql = `SELECT * FROM userlogin WHERE Username = ?`; let result = con.query(sql, email, (err, result) => { if (!err) { return result[0]; // callback returns the result } else { return err; } }); return result; }

No tengo ideas, sé que si pudiera hacer que con.query() devuelva el valor de retorno de la devolución de llamada, podría obtener el resultado, pero ¿cómo lo hago?

A continuación se muestra la versión de la función que escribí con Promises, que devuelve el resultado de la consulta como pretendía.

 function getUserByEmail(email) { let sql = `SELECT * FROM userlogin WHERE Username = ?`; return new Promise((resolve, reject) => { con.query(sql, email, (err, result) => { if (!err) { resolve(result[0]); } else { console.log(err); reject(err); } }) }) }
about 4 years ago · Juan Pablo Isaza
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