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