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


안녕하세요

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 가 정의되지 않았다고 하구요...

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

도와주세요 ㅠㅠ

  • 2016년 09월 16일에 작성됨
    현재 node.js 를 열심히 공부하고 있습니다.

조회수 124


1 답변


좋아요
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]});

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

  • 2016년 09월 17일에 작성됨
    웹을 좋아함

로그인이 필요한 기능입니다.

Hashcode는 개발자들을 위한 무료 QnA사이트 입니다. 작성한 답변에 다른 개발자들이 댓글을 작성하거나 좋아요/싫어요를 할 수 있기 때문에 계정을 필요로 합니다.
► 로그인
► 계정만들기
Close