2017-12-07 2 views
1

res.send를 사용하여 데이터베이스의 모든 데이터를 다시 보내려고하지만 오류가 발생합니다. 내 프론트 엔드에서 끝점을 select이라고하고 데이터베이스 내의 모든 행과 데이터를 반환하려고합니다. 후자의 기능 (res.send의 첫 번째 사용이 실행 된 후 아무것도)Express 응답으로 개체를 보낼 수 없습니다.

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

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

for 루프에서 응답을 래핑하지 마십시오. 모든 행을 하나의 객체로 누적하여 한 번 보냅니다. –

+1

전체'rows' 배열을 보내지 않는 이유는 무엇입니까? – Luca

답변

3

당신은 res.write 대신 res.send 사용해야합니다 아니면 전체 rows 배열을 보내 res.send를 사용하려는 경우 :

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

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

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

'res.write'는 어디에서 쓸 수 있습니까? 나는 둘 다 시도하고 나는이 오류가 계속. 오류 : 헤더를 보낸 후에 설정할 수 없습니다. – JorahFriendzone

+0

res.end를 사용하여 사용자에게 보낸 익명 객체에 어떤 오류가 발생했는지 기록합니다. – Luca

+0

관련이없는 모듈에 오류가 발생합니다. 'node_modules/mysql/lib/protocol/Parser.js : 80' 오류가 발생했습니다. err; // MySQL 이외의 에러를 일으킨다. – JorahFriendzone