Nœud.js renvoyant le résultat de la requête MySQL
J'ai la fonction suivante qui obtient un hexcode 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 retourne 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 il 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 de renvoyer la valeur dans colour
21
demandé sur
Herrmann Hinz
2013-08-21 19:42:50
1 réponses
Vous devez effectuer le traitement des résultats de la requête db sur un rappel uniquement. Tout 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);
}
});
46
répondu
mithunsatheesh
2013-08-21 18:42:26