목차

반응형

게시판 같은 경우 mysql이나 oracle에서는 rownum을 이용하여 페이징을 쉽게 처리하였으나

몽고db, 몽구스는 해당 기능이 딱히 없는듯 하다.

그래서 아래와 같이 페이징 처리를 해주는 함수를 만들어봤다


필요한 파라미터는 몽구스 find함수의 결과물, pageIndex, pageUnit이다.

pageUnit은 한 페이지에 들어가는 게시물 개수를 뜻하고 pageIndex는 불러올 페이지의 개수를 뜻한다.

만약에 게시판의 맨처음 페이지로 진입하면 pageIndex는 1이어야한다.



bbs.find(query, function (err, result) {
if (err)
return res.end(err);
if (!req.body.pageIndex)
req.body.pageIndex = "";
if (!req.body.pageUnit)
req.body.pageUnit = "";
res.end(JSON.stringify(paging(result, req.body.pageIndex, req.body.pageUnit)));
});




var paging = function (bbs, pageIndex, pageUnit) {

var length = bbs.length;
//bbs -> 게시물 조회결과, pageIndex -> 현재 페이지, pageUnit -> 페이지당 게시물 단위수
if (pageIndex == '' && pageUnit == '')
return bbs;
else {
if (pageIndex > length / pageUnit) {
console.log("error no such page index " + pageIndex + "<=" + length + "/" + pageUnit);
return null;
}
var startIndex = (pageIndex - 1) * pageUnit;
var endIndex = pageIndex * pageUnit;
var data = [];
for (var i = startIndex; i < endIndex; i++) {
data.push(bbs[i]);
}
return data;
}
}


오 근데 인텔리제이 개오지네 그냥 소스복붙만해도 이렇게나옴 

반응형