Подтвердить что ты не робот

Node.js возвращает результат запроса MySQL

У меня есть следующая функция, которая получает шестнадцатеричный код из базы данных

function getColour(username, roomCount)
{
    connection.query('SELECT hexcode FROM colours WHERE precedence = ?', [roomCount], function(err, result)
    {
        if (err) throw err;
        return result[0].hexcode;
    });
}

Моя проблема в том, что я возвращаю результат в функцию обратного вызова, но функция getColour ничего не возвращает. Я хочу, чтобы функция getColour возвращала значение result[0].hexcode.

В тот момент, когда я вызвал getColour, он ничего не возвращает

Я пробовал сделать что-то вроде

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;
}

но, конечно, запрос SELECT завершил к моменту возврата значения в colour

4b9b3361

Ответ 1

Вы должны выполнить обработку результатов из запроса db только для обратного вызова. Точно так же.

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);   
        }    

});