2017-01-14 12 views
0

SQLのinsertIdを取得してフロントエンドに返そうとしています。しかし、res.send(result.insertId)を実行すると、500エラーが発生します。 sqlのinsertIdをフロントエンドに正常に配信するにはどうすればよいですか?ExpressJS - POSTリクエストで応答として変数を送信

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

答えて

0

コードには、クエリを終了する前に戻っていることを確認するための1つの問題があります。したがって、コールバック関数の内部から戻る必要があります。

0

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); 
    }) 
}); 
関連する問題