본문 바로가기

Node.js

node.js mongojs 를 이용한 웹페이지 출력

node.js 에서 mongojs 모듈을 이용하여 웹페이지에 DB데이터를 출력하는 예제입니다.

먼저 js 파일 소스입니다.


var connect = require('connect');
var fs = require('fs');
var ejs = require('ejs');
var db = require('mongojs').connect('board', ['test']);

function get(path, cb){
    return function(req, res ,next){
     if(req.method != 'GET' || req.url != path) return next();
        cb(req, res, next);
    }
}


var app = connect()
    .use(get('/', function (req, res, next){
        fs.readFile('test.htm', 'utf8', function(error, data){
            db.test.find({},  {name:1, score:1, _id:0}, function (error, cursor) {
                res.writeHead(200, {'Content-Type':'text/html'});
                res.end(ejs.render(data, {
                    data : cursor
                }));
            });
        });
    }))
    .listen(8080, function(){console.log("server start 127.0.0.1:8080");});


사용된 DB의 구조 및 데이터값은 이곳을 보시기 바랍니다. http://uiandwe.tistory.com/835

사용된 DB는 board 이며 사용 콜렉션은 test 입니다.

웹서버 구현은 connect 모듈을 사용했으며 자세한 사항은 이곳 포스팅을 참조하시기 바랍니다. http://uiandwe.tistory.com/836

위의 포스팅에서 달라진것은 DB에 접속하고 값을 가져오는 부분만 추가 하였습니다. 

디비 쿼리문은  db.test.find({},  {name:1, score:1, _id:0} test콜렉션에서 모든 값을 가져오며 name, score 칼럼값만 가져오도록 하였습니다. 

또한 ejs.render() 를 통하여 DB에서 가져온 값을 data에 넣어서 웹페에지를 출력하는 방식입니다.




다음은 출력될 htm 파일 소스입니다.

<!DOCTYPE html>
<html>
<head>
    <title>List Page</title>
</head>
<body>
    <h1>List Page</h1>
    <hr />
    <table width="100%" border="1">
        <tr>
            <th>NAME</th>
            <th>SCORE</th>
        </tr>
        <% for (var temp  in data){%>
    <tr>
        <td><%=data[temp].name%></td>
        <td><%=data[temp].score%></td>
    </tr>
    <%} %>
    </table>
</body>
</html>

js파일에서 보내온 data값을 for 문을 돌면서 차례대로 출력합니다.

따로 data 값을 보시면 집합형태로 전달되는것을 볼수 있습니다.



 이때 temp 값으로 넘어가는값은 집합의 순서입니다.  

따라서 data[0].name 을 출력, data[0].score 을 출력하시오. 가 됩니다.




최종결과 화면