【问题标题】:Why is mysql database information won't pass to express.js function? [duplicate]为什么mysql数据库信息不会传递给express.js函数? [复制]
【发布时间】:2019-09-10 15:46:42
【问题描述】:

我有这个代码

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 设置为等于该函数,但结果未定义。 我该如何解决?

【问题讨论】:

    标签: javascript mysql node.js express asynchronous


    【解决方案1】:

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

    你需要这样的东西:

    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();
    }
    

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

    【讨论】:

      猜你喜欢
      • 2019-12-19
      • 1970-01-01
      • 1970-01-01
      • 2020-08-24
      • 2019-06-07
      • 1970-01-01
      • 2020-11-16
      • 2011-06-09
      • 1970-01-01
      相关资源
      最近更新 更多