我正在尝试使用res.send将数据库中的所有数据发送回去,但是这使我出错。在前端,我正在调用端点select,并尝试返回数据库中的所有行和数据。

app.get('/select', function (req, res) {
    con.query('SELECT * FROM Contracts', function (err, rows, fields) {

    if (err) {
      console.log(`Error: ${err}`);
    }

    for (var i = 0; i < rows.length; i++) {
      var row = rows[i];
      res.send(row);
    }
  })
});

最佳答案

您应该使用res.write而不是res.send,因为后者会终止该函数(第一次使用res.send后,将不会执行任何操作)

app.get('/select', function (req, res) {
    con.query('SELECT * FROM Contracts', function (err, rows, fields) {

    if (err) {
      console.log(`Error: ${err}`);
    }

    for (var i = 0; i < rows.length; i++) {
      var row = rows[i];
      res.write(row);
    }
    res.end(); //this finally sends the response
  })
});


或者,如果您想使用res.send发送整个rows数组:

app.get('/select', function (req, res) {
    con.query('SELECT * FROM Contracts', function (err, rows, fields) {

    if (err) {
      console.log(`Error: ${err}`);
    }

    res.send(rows);
  })
});

08-04 17:38