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
Ответы
Ответ 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);
}
});