一尘不染

Node.js从MySQL查询返回结果

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


阅读 989

收藏
2020-05-17

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

});
2020-05-17