Node.js与mysql数据库回调函数的连接未执行

Node.js与mysql数据库回调函数的连接未执行,mysql,node.js,Mysql,Node.js,我试图将node.js应用程序连接到mySQL数据库,但似乎没有执行con.connect()和con.query()的回调函数。 这是我的代码的连接部分: const mysql = require('mysql'); const con = mysql.createConnection({ host: "localhost", user: "user", password: "pass", databas

我试图将node.js应用程序连接到mySQL数据库,但似乎没有执行
con.connect()
con.query()
的回调函数。 这是我的代码的连接部分:

const mysql = require('mysql');
const con = mysql.createConnection({
           host: "localhost",
           user: "user",
           password: "pass",
           database: "db",

    });

app.get('/timetracking/dbTest', (req, res) => {
    var error1;
    var r;



    con.connect(function(err){
        s = 3;
        res.send(err);
    });

    var s = 1;

    con.query("SELECT * FROM Employee", function (err, result, fields) {
        error1 = err;
        res.send("yes");
        r = result;
        s = 2;
    });
    if (error1) res.send(error1 + "fail");
    else res.send(r + "ok" + s);
});

该应用程序正在正常启动,我可以在浏览器中查看该网站,但结果是“undefinedok1”。这意味着发送变量的值不会在回调函数中更改。安装了mysql模块。此外,如果我为DB用户输入了无效密码,则不会收到任何错误消息。我无法想象他们为什么不换衣服

回调代码从方法的其余部分异步运行。您需要在每个后续回调中运行代码,或者使用async/await或Promissions

现有代码的最简单调整(徒手操作,可能有语法错误):


回调不是同步的-例如,
var s=1
行将在
con.connect
之后但在回调(可能)完成之前运行-它是异步的。您必须在每个后续回调中链接工作,或者使用一些更易于管理的方法(例如,
异步
函数和
等待
函数,或者使用承诺)。这是一个网站上存在大量几乎重复的问题。其中一些是旧的,建议使用
async
库,但这种用法在promises/async/awaitOk中大多不受欢迎,谢谢你,所以我想这是将select结果导出到变量中的错误方法。我将为此寻找解决方案。我只是想知道,因为没有任何错误,我自己找到了一个解决方案,但这也应该有效。谢谢你的异步提示!我完全忘了那个。
app.get('/timetracking/dbTest', (req, res) => {
    var error1;
    var r;

    con.connect(function(err){
        s = 3;
        if (err) {
          return res.send(err);
        }

        var s = 1;

        con.query("SELECT * FROM Employee", function (err, result, fields) {
            error1 = err;

            r = result;
            s = 2;

            if (error1) res.send(error1 + "fail");
            else res.send(r + "ok" + s);
        });
    });
});