无法在Express响应中发送对象

时间:2017-12-07 18:48:03

标签: javascript rest express

我正在尝试使用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);
    }
  })
});

1 个答案:

答案 0 :(得分:3)

您应该使用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);
  })
});