게시판 같은 경우 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;
}
}
오 근데 인텔리제이 개오지네 그냥 소스복붙만해도 이렇게나옴
'JS > Mongodb' 카테고리의 다른 글
몽고DB 3.4에서 3.6으로 업데이트 하기 (0) | 2018.04.26 |
---|---|
Mongodb unique key 값 삭제하기 MongoError: E11000 duplicate key error index (0) | 2018.04.22 |
MeanStack - Mongoose에서 데이터를 찾아서 Json으로 내보낼때 throw new TypeError('first argument must be a string or Buffer'); (1) | 2016.07.19 |
MeanStack - 몽구스에서 콜렉션을 참조할때 끝에 s를 붙여서 참조해버릴때 (0) | 2016.07.19 |
mongodb VS mongoose (0) | 2016.06.24 |