首页 > 解决方案 > 通过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);
        }
    });
}

标签: javascriptmysqlnode.jscallbackasynccallback

解决方案


您正在使用const,这意味着您无法使用 更改该变量的值=。你必须let改用。


推荐阅读