Saltar al contenido

Node.js devuelve el resultado de la consulta MySQL

Posterior a observar en varios repositorios y páginas webs finalmente hemos hallado la respuesta que te enseñaremos más adelante.

Solución:

Debe realizar el procesamiento de los resultados de la consulta de base de datos solo en una devolución de llamada. Al igual que.

function getColour(username, roomCount, callback)

    connection.query('SELECT hexcode FROM colours WHERE precedence = ?', [roomCount], function(err, result)
    
        if (err) 
            callback(err,null);
        else
            callback(null,result[0].hexcode);

    );



//call Fn for db query with callback
getColour("yourname",4, function(err,data)
        if (err) 
            // error handling code goes here
            console.log("ERROR : ",err);            
         else             
            // code to execute on data retrieval
            console.log("result from db is : ",data);   
            

);

Si quieres usar promesas para evitar los llamados “infierno de devolución de llamada” hay varios enfoques.

Aquí hay un ejemplo usando promesas nativas y el estándar mysql paquete.

const mysql = require("mysql");

//left here for testing purposes, although there is only one colour in DB
const connection = mysql.createConnection(
  host: "remotemysql.com",
  user: "aKlLAqAfXH",
  password: "PZKuFVGRQD",
  database: "aKlLAqAfXH"
);

(async () => 
  connection.connect();
  const result = await getColour("username", 2);
  console.log(result);
  connection.end();
)();

function getColour(username, roomCount) 
  return new Promise((resolve, reject) => 
    connection.query(
      "SELECT hexcode FROM colours WHERE precedence = ?",
      [roomCount],
      (err, result) => 
        return err ? reject(err) : resolve(result[0].hexcode);
      
    );
  );

En las funciones asíncronas, puede utilizar el esperar expresión que pausará la ejecución de la función hasta que se resuelva o rechace una Promesa. De esta manera el getColour La función devolverá una promesa con la consulta MySQL que detendrá la ejecución de la función principal hasta que se devuelva el resultado o se produzca un error de consulta.

Un enfoque similar, pero quizás más flexible, podría ser usar un paquete contenedor de promesas de la biblioteca MySQL o incluso un ORM basado en promesas.

Sección de Reseñas y Valoraciones

Más adelante puedes encontrar las notas de otros creadores, tú aún puedes dejar el tuyo si te gusta.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *