node.js 에서 mysql 테이블을 다중 렌더링 하려고 합니다...

조회수 2866회

안녕하세요

read라는 페이지 내에서 sql 테이블 하나를 불러오고 하나 더 불러오려고 하는데,

도저히 방법을 모르겠습니다.

코딩은 아래와 같습니다.


router.get('/read/:idx',function(req,res,next) {

var idx = req.params.idx;

pool.getConnection(function (err, connection) {

    var sql = "select idx, creator_id, title, content, date_format(modidate,'%Y-%m-%d %H:%i:%s') modidate, hit from board where idx = ?";

    connection.query(sql, [idx], function (err, row) {

        if (err) console.error(err);
        console.log("row : " + JSON.stringify(row));

        // 조회수 값
        var hit = req.body.hit;
        // 조회수 값 수정
        var sql = 'update board set hit = hit + 1 where idx = ?';
        connection.query(sql, [idx, hit], function (err, result) {
            console.log(result);
        });
        res.render('read', {title: 'test', row: row[0]});

        var sql2 = "select id, m_id, m_name, m_tel, m_date, m_gender, m_email, m_int, m_hello, m_file from users";
        connection.query(sql2, function (err, rows) {
            if (err) console.error("err : " + err);
            console.log("rows : " + JSON.stringify(rows));
        res.render('read', {title: 'test', rows: rows[0]});
        });
        connection.release();
    });
});

});


        res.render('read', {title: 'test', row: row[0]});

제가 이 부분을 통해서 read 페이지로 다시 랜더링을 하려고 하는데요.

첫번째 테이블인 board를 row로 줘서 가져오는데는 성공을 했으나, 두번째 테이블인 users는 rows 로 렌더링 해줬는데, 자꾸 에러가 납니다.

에러 내용은 rows 가 정의되지 않았다고 하구요...

분명 렌더링을 해줬는데 이와 같이 문제가 나는 이유를 모르겠습니다.

도와주세요 ㅠㅠ

  • (•́ ✖ •̀)
    알 수 없는 사용자

1 답변

  • 제가 알기론 res.render는 2번이상은 안되는걸로 알고있습니다.

    코드를 비동기로 만드신후 res.render 할때 row와 rows를 같이 보내야 할것 같습니다

    var idx = req.params.idx;
    
    pool.getConnection(function (err, connection) {
    
        var sql = "select idx, creator_id, title, content, date_format(modidate,'%Y-%m-%d %H:%i:%s') modidate, hit from board where idx = ?";
    
        connection.query(sql, [idx], function (err, row) {
    
            if (err) console.error(err);
            console.log("row : " + JSON.stringify(row));
    
            var hit = req.body.hit;
    
            var sql = 'update board set hit = hit + 1 where idx = ?';
            var sql2 = "select id, m_id, m_name, m_tel, m_date, m_gender, m_email, m_int, m_hello, m_file from users";
    
            connection.query(sql, [idx, hit], function (err, result) {
                console.log(result);
                connection.query(sql2, function (err, rows) {
                    if (err) console.error("err : " + err);
                    console.log("rows : " + JSON.stringify(rows));
                    res.render('read', {title: 'test', row:row[0], rows: rows[0]});
                });
                connection.release();
            });
        });
    });
    

    급하게 적느라 틀린게 있을수도 있지만 이렇게 비동기로 만들어 주셔야합니다

    그리고 제일마지막에

    res.render('read', {title: 'test', row:row[0], rows: rows[0]});
    

    이렇게 같이 보내주시면 될것 같습니다

    • (•́ ✖ •̀)
      알 수 없는 사용자

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)