Javascript 无法在快速响应中发送对象
我正在尝试使用res.send将数据库中的所有数据发回,但它给我带来了一个错误。在我的前端,我调用端点Javascript 无法在快速响应中发送对象,javascript,rest,express,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}`); }
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);
}
})
});
app.get('/select',函数(req,res){
con.query('SELECT*FROM Contracts',函数(错误、行、字段){
如果(错误){
log(`Error:${err}`);
}
对于(变量i=0;i
您应该使用res.write
而不是res.send
,因为后者会终止函数(第一次使用res.send
后不会执行任何操作)
尽量不要将您的响应包装在for循环中。将所有行累加到一个对象中并一次性发送。为什么不发送整个
行
数组?但是res.write
写入到哪里?我两次都试过了,但一直都会出错。错误:发送头后无法设置头。它会写入一个匿名对象,该对象通过res.end发送给用户。该错误发生在哪一行?它会在一个不相关的模块中抛出该错误node_modules/mysql/lib/protocol/Parser.js:80
抛出错误;//重新显示非MySQL错误
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
})
});
app.get('/select', function (req, res) {
con.query('SELECT * FROM Contracts', function (err, rows, fields) {
if (err) {
console.log(`Error: ${err}`);
}
res.send(rows);
})
});