J'ai la fonction suivante qui obtient un code hexadécimal de la base de données
function getColour(username, roomCount)
{
connection.query('SELECT hexcode FROM colours WHERE precedence = ?', [roomCount], function(err, result)
{
if (err) throw err;
return result[0].hexcode;
});
}
Mon problème est que je renvoie le résultat dans la fonction de rappel, mais la fonction getColour ne renvoie rien. Je veux que la fonction getColour renvoie la valeur de result[0].hexcode
.
Au moment où j'ai appelé getColour ça ne retourne rien
J'ai essayé de faire quelque chose comme
function getColour(username, roomCount)
{
var colour = '';
connection.query('SELECT hexcode FROM colours WHERE precedence = ?', [roomCount], function(err, result)
{
if (err) throw err;
colour = result[0].hexcode;
});
return colour;
}
mais bien sûr, la requête SELECT est terminée au moment où retourner la valeur dans colour
Vous devez effectuer le traitement des résultats de la requête db uniquement lors d'un rappel. Juste comme.
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);
}
});