[nodejs] 쿼리 결과 데이터 모두 출력하기

3250 단어 dbnodejsdb

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

이것도 기본적인 걸텐데..ㅠ
처음이라 헤매긴 했지만 해내고 나니까 뿌듯하다


좋은 웹페이지 즐겨찾기