提问者:小点点

通过mysql回调函数将数据传递给全局变量?


我对nodejs还是个新手,而且还在掌握它的诀窍。 我希望下面的代码将一个用户从数据库传递回一个变量。 当我获取一些数据时,连接和查询可以正常工作,但似乎无法将其存储在全局变量中。

在本例中,变量'test_user'可以工作(就像它在函数中一样),但是变量'test'不能工作。

我假设我需要将async和await放在某个地方,但我不知道放在哪里。

let test;

app.get('/testing', (req, res) => {
    res.send("testing area");
    test = getUserByEmail("w@w", function(result) {
        let test_user;
        if(result.length > 0)
        {
            test_user = result[0];
            console.log(test_user); //logs the result ok
        } else {
            test_user = null;
        }
        return test_user;
    });

    console.log(test); //doesn't log the result

    
});


function getUserByEmail(email, callback) {

    const SELECT_QUERY = "SELECT * FROM users WHERE email='"+ email +"'";

    connection.query(SELECT_QUERY, (err, results) => {
        if(err) {
            console.error(err);
        } else {
            return callback(results);
        }
    });
}

共2个答案

匿名用户

您使用的是const,这意味着您不能使用=更改该变量的值。 您必须改用let

匿名用户

在get路由中使用async/await:

app.get('/testing', async (req, res) => {

test = await getUserByEmail("w@w", function(result) {