es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Resultado de la consulta de importación de mysql de Node.js fuera de la función.

Estoy haciendo un sitio web en el que necesito importar datos de una base de datos y usarlos más tarde en el programa. Pero cuando uso el paquete npm mysql no encuentro ninguna manera de importar el resultado de la consulta fuera de la función para su uso posterior. Aquí hay un ejemplo de mi código.

Función con la que obtengo los datos de la base de datos:
javascript
let output;
dba.query('SELECT * FROM movies-web.movies;',(err, rows) => {
if(err) {
throw err;
} else {
output = rows;
}
});

Y en el código lo uso así:
javascript
res.write(output);

Pero la variable output devuelve undefined.

Estoy resolviendo este problema desde hace más de un mes, he navegado por tantas páginas, preguntas aquí en stackoverflow y no puedo encontrar una solución que funcione.

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Para importar datos de una base de datos y utilizarlos más tarde en su programa, debe asignar los resultados de la consulta a una variable que sea accesible fuera de la función. En su código de ejemplo, la variable output está definida dentro del ámbito de la función, lo que la hace inaccesible fuera de la función.

    Para resolver este problema, puede utilizar uno de los siguientes métodos:

    1. Promesas: Use una promesa para devolver los resultados de la consulta y asignarlos a una variable fuera de la función.
    function getData() {
      return new Promise((resolve, reject) => {
        dba.query('SELECT * FROM `movies-web`.movies', (err, rows) => {
          if (err) {
            return reject(err);
          }
          resolve(rows);
        });
      });
    }
    
    getData()
      .then((output) => {
        // aquí se usa la variable de salida (output)
      })
      .catch((err) => {
        console.error(err);
      });
    
    1. Callbacks: Pase una función de devolución de llamada que se ejecutará con los resultados de la consulta como argumento cuando se complete la consulta.
    function getData(callback) {
      dba.query('SELECT * FROM `movies-web`.movies', (err, rows) => {
        if (err) {
          return callback(err, null);
        }
        callback(null, rows);
      });
    }
    
    getData((err, output) => {
      if (err) {
        console.error(err);
      }
      // aquí se usa la variable de salida (output)
    });
    

    En ambos casos, los resultados de la consulta se asignan a una variable que es accesible fuera de la función. Luego puede utilizar esta variable para importar los datos en su programa para su uso posterior.

Comments are closed.