[nodejs] 쿼리 결과 데이터 모두 출력하기
nodejs를 이번에 처음 배우고 있다
매번 DB에 있는 걸 어떻게 뿌려주는 거지 궁금했어서
재밌긴 재밌는데 엄청 헤맨 부분이 있어서 정리해본다,,!
학번으로 takes 테이블을 조회해서
과목번호, 수강학기, 년도, 성적 정보를 불러오려고 하는데 여러 문제를 겪었다.
1. 대소문자?
- 처음엔 rows[0]['id'] 이렇게 썼는데, rows[0]['ID']로 써야했음
- 대소문자 구별 안하는 줄 알았는데 결과에서 가져오는거라 그런지 그대로 써야하나보다
2. res.send()
- 이걸 for문 안에서 그대로 여러 번 호출했는데 그러면 안된다
- output이라는 변수를 따로 만들어줘서 거기에 text들을 더해준 다음 마지막에 한 번만 res.send() 해주었다
- 다른 방법 있을지도..?
- 원인은 좀 검색해보니 이와 같은 콜백함수를 여러 번 호출하면 오류가 발생한다고 한다
router.post('/', function (req, res, next) {
var student_number = req.body['student_number'];
var output;
mysqlDB.query('select * from takes where id = ?', [student_number], function (err, rows, fields) {
if (!err) {
var id = rows[0]['ID'];
output = '<h1>성적 조회 결과</h1><hr><br> 학번: ' + id + '<br>';
for(let i=0; i <rows.length; ++i)
{
var course_id = rows[i]['course_id'];
var semester = rows[i]['semester'];
var year = rows[i]['year'];
var grade = rows[i]['grade'];
output += '과목번호: ' + course_id + '<br>' +
'수강학기: ' + semester + '<br>' +
'수강년도: ' + year + '<br>' +
'성적: ' + grade + '<br><hr>';
}
res.send(output);
}else{
res.send('error: ' + err);
}
});
});
이것도 기본적인 걸텐데..ㅠ
처음이라 헤매긴 했지만 해내고 나니까 뿌듯하다
Author And Source
이 문제에 관하여([nodejs] 쿼리 결과 데이터 모두 출력하기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@minjujuu/nodejs-쿼리-결과-데이터-모두-출력하기저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)