【问题标题】:ExpressJS - Send variable as response on POST requestExpressJS - 发送变量作为对 POST 请求的响应
【发布时间】:2017-01-14 17:11:13
【问题描述】:

我正在尝试检索 SQL 的 insertId 并将其发送回前端。但是当我执行 res.send(result.insertId) 时,我收到 500 错误。如何将sql的insertId成功下发​​到前端?

router.post('/list', function(req, res, next) {
    var lastIncrement = 0;
    pool.getConnection(function (error, connection) {
        connection.query('INSERT INTO test_table SET Name = ?, Age = ?', [req.body.Name, req.body.Age], function (error, result) {
            if(error)
                console.error(error);
            lastIncrement = result.insertId;
            connection.release();
        });
    });
    res.send(lastIncrement);
});

【问题讨论】:

    标签: mysql sql node.js express


    【解决方案1】:

    您的代码中存在一个问题,确保您在完成查询之前返回。所以你必须从回调函数内部返回。

    router.post('/list', function(req, res, next) {
    var lastIncrement = 0;
    pool.getConnection(function (error, connection) {
        connection.query('INSERT INTO test_table SET Name = ?, Age = ?', [req.body.Name, req.body.Age], function (error, result) {
            if(error)
                console.error(error);
            lastIncrement = result.insertId;
            connection.release();
            res.send(lastIncrement);
        });
    });
    
    });
    

    【讨论】:

      【解决方案2】:

      由于 nodejs 的异步特性,您的 res.send 在查询返回值之前执行。您可以使用.then 承诺来确保res.send 在您从查询中获取值之后发生,或者在分配值之后具有res.send

      你可以试试这个:

      pool.getConnection(function (error, connection) {
          connection.query('INSERT INTO test_table SET Name = ?, Age = ?', [req.body.Name, req.body.Age], function (error, result) {
              if(error)
                  console.error(error);
              lastIncrement = result.insertId;
              connection.release();
          }).then(function(){
              res.send(lastIncrement);
          })
      });
      

      【讨论】:

        猜你喜欢
        • 2018-09-16
        • 1970-01-01
        • 1970-01-01
        • 2017-10-12
        • 2017-03-01
        • 2020-07-29
        • 2019-09-29
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多