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 을 출력하시오. 가 됩니다.
최종결과 화면
'Node.js' 카테고리의 다른 글
connect 모듈 router 기능 구현 (0) | 2013.04.07 |
---|---|
connect-route 모듈 이용하기 (0) | 2013.04.06 |
connect 모듈 router 에러 발생시 (2) | 2013.04.03 |
node.js mongojs 를 이용한 mongodb 예제 (0) | 2013.04.02 |
node.js 시작 에러 (events.js:71 throw arguments[1]; // Unhandled 'error' event ) (0) | 2013.03.17 |