Node.js 从 MySQL 查询返回结果

2022-01-03 00:00:00 node.js callback 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);   
        }    

});

相关文章