为什么mysql数据库信息不会传递给express.js函数?

时间:2019-04-20 20:53:16

标签: javascript mysql node.js express asynchronous

我有这个代码

app.get("/api/tables", function(req, res) {

    function retrieve() {
        connection.query("SELECT * FROM reservations", function(err, res) {
            if (err) throw err;
            return res;
        });
    }

    res = retrieve();
    console.log(res,"results");

    return res;
});

它从表中选择所有内容,然后为express.js函数设置一个res等于该函数,但结果未定义。 我该如何解决?

1 个答案:

答案 0 :(得分:0)

这些node.js操作是异步,但是您将它们视为同步。在查询运行之前和回调函数运行之前,您的retrieve()函数return会调用它的调用者。

您需要这样的东西:

app.get("/api/tables", function(req, res) {
    function retrieve(){
        connection.query("SELECT * FROM reservations", function(err, resultset) {
            if (err) {
                console.log (err);
                res.status(500).send('query error')l
            }
            else {
                console.log (resultset);
                res.status(200).send(JSON.stringify(resultset);
            }
        });
     }
     retrieve();
}

重点是将查询结果从回调内部发送回请求的客户端