Node.js 从 MySQL 查询返回结果
我有以下函数可以从数据库中获取十六进制代码
I have the following function that gets a hexcode from the database
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
的值.
My problem is that I am returning the result in the callback function but the getColour function doesn't return anything. I want the getColour function to return the value of result[0].hexcode
.
在我调用 getColour 的那一刻,它没有返回任何东西
At the moment when I called getColour it doesn't return anything
我试过做类似的事情
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
but of course the SELECT query has finished by the time return the value in colour
推荐答案
您必须仅对回调的 db 查询结果进行处理.就像.
You have to do the processing on the results from the db query on a callback only. Just like.
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);
}
});
相关文章