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.