Notice
Recent Posts
Recent Comments
Link
«   2025/07   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31
Tags
more
Archives
Today
Total
관리 메뉴

다재다능 개발자 성장기 🚀

항해99 👩‍💻75일차 TIL 본문

항해99_6기_TIL

항해99 👩‍💻75일차 TIL

merrytang 2022. 5. 20. 21:08

 

⭐ Final Project ⭐

offset 방식을 사용하여 무한스크롤(Infinite Scroll)을 구현하였다. 

 

Infinite Scroll 

백엔드에서 가지고 있는 수 많은 데이터를 한 번에 보내주면 프론트에서 처리할 일이 많아지기 때문에 서로 약속한 일정 기준으로 잘라서 프론트엔드로 보내주는 방식이다.

 

원리

프론트엔드에서는 현재의 위치인 Offset과 한 번에 보여줄 갯수인 limit를 백엔드로 넘기면, 백엔드에서는 그에 해당하는 길이로 데이터를 끊어서 보내준다. 

 

장점

사용자 친화적이다(페이지 버튼을 클릭하는 것보다 편리하다).

화면이 작은 모바일에서 더욱 유용하다.

 

 

코드

const board = async (req, res) => {
  try {
    const data = req.query;
    
    //프런트엔드에서 page, limit값이 잘 넘어오는지 확인.
    console.log("page", data.page);
    console.log("limit", data.limit);
    
    //infinite scroll 핸들링
    // 변수 선언 값을 정수로 표현
    let page = Math.max(1, parseInt(data.page));
    let limit = Math.max(1, parseInt(data.limit));
    
    //NaN일때 값지정 
    page = !isNaN(page) ? page : 1;
    limit = !isNaN(limit) ? limit : 6;
    
    //제외할 데이터 지정 (+1 해준 게 다음 페이지 시작점이다.)
    let skip = (page - 1) * limit;

    const boards = await Board.find({})
      .skip(skip)
      .limit(limit);

    res.json({ boards });
  } catch (err) {
    console.error(err);
    next(err);
  }
};

'항해99_6기_TIL' 카테고리의 다른 글

항해99 👩‍💻77일차 TIL  (0) 2022.05.22
항해99 👩‍💻76일차 TIL  (0) 2022.05.21
항해99 👩‍💻74일차 TIL  (0) 2022.05.19
항해99 👩‍💻73일차 TIL  (0) 2022.05.19
항해99 👩‍💻72일차 TIL  (0) 2022.05.19