Nov 15-20, 2021

Sung Hyun Hong (Jenny)·2022년 1월 25일
0
  1. 댓글 페이지네이션 추가 및 수정 & 완료

const { pagination } = req.query;

설명: pagination에서 URL 뒤에 ?__가 필요하기 때문에, 쿼리형식으로 처리한다

const perPage = 4; // limit

설명: 한 페이지당 보여줄 댓글 갯수

const offset = pagination perPage; // offset*

설명:

//const count = await Comment.count();

const totCount = respondComments.length;

설명: 댓글 조회시 나올 전체 댓글 수

console.log(totCount);

const pageNum = parseInt(pagination, 10); // parseInt(string, 진수)

설명: 페이지 수를 2진수가 아닌 10진수로 처리

//console.log(pageNum);

const totalPg = Math.ceil(totCount / perPage);

설명: 전체 댓글 중 각 페이지에 댓글이 몇개 있는지 생각해서 페이지 수를 출력함

//console.log(totalPg)

let startNum = 0;

let lastNum = 0;

설명: 배열 처리시 숫자의 변동이 있을 수 있기 때문에, 0으로 처리함

//유효성 검사

// case 1: 댓글을 1개 이상 찾을 수 있는 경우

if (pageNum >= 1) {

(startNum = (pageNum - 1) perPage), (lastNum = pageNum perPage);

}

// case 2: 댓글을 찾을 수 없는 경우

else {

message = "작성된 댓글이 없습니다.";

logger.info(GET /api/posts/${postId}/comments 404 res:${message});

return res.status(404).send({ message });

}

if (respondComments.length < offset) {

lastNum = respondComments.length;

}

// 배열

const cmtsList = [];

for (let i = startNum; i < lastNum; i++) {

cmtsList.push(respondComments[i]);

}

// res 부분 처리를 getPgNum에서 insert하기에는 어려움 그래서 cmtsControl에서 처리

if (cmtsList === null) {

message = "댓글 리스트를 불러오는데 실패 했습니다.";

logger.info(GET /api/posts/${postId}/comments 400 res:${message});

return res.status(400).send({ message });

}

// 성공 응답 코드

message = "댓글 조회에 성공했습니다.";

logger.info(GET /api/posts/${postId}/comments 200 res:${message});

return res.status(200).send({ cmtsList, message, totalPg });

} catch (error) {

console.log(error);

message = "알 수 없는 문제가 발생했습니다.";

logger.error(GET /api/posts/${postId}/comments 500 res:${error});

return res.status(500).send({ message });

}

  • 총 댓글 수 작성시 문제점
    1. vscode에서 db에서 comments 조회시, 2번 조회 16번까지만 가능하고, 현 데이터 17번까지 조회가 되지 않았다

      해결: literal로 count로 조건 추가

    2. 실질적인 문제 및 해결

      Comment.count() ⇒ 이 함수는 db에 있었던 모든 데이터 갯수를 불러온다

      그래서 모든 조회 수의 결과인 10이 나오게 된다.

      하지만, postId=1 혹은 postId=2를 불러오려면,

      다시말해, 1번 포스트 조회 9개, 2번 포스트 조회 1개를 불러오려면,

      respondComments 가 배열이라 respondComments.length를 적어야 한다

  1. 메일링 시스템 기능 맡게됨 (ufo github 참고)

11/19 ufo 코드에서 nodemailer 분석, 구글링해서 여러 자료 참고

but eventually, this function did not add onto the function. In order to add onto the system, it was quite complicate.

  1. 멘토링 노트 정리
  • CICD를 제대로 할거면 테스트코드가 필요하다
  • 어느 이상 넘어갔을때, 알람을 주도록 설치한다
    ⇒ "포스트모텀" 을 사용해서 처리가능하다
  • 리팩토링 하려면 테스트코드가 필요하다
    ⇒ 좋은 테스트코드를 작성할 방법이 필요하다
    ⇒ 우선순위가 있는대로, 작성하면 된다.
    ⇒ 취업과 협업을 위해서 하는 거라면, 애자일, OKR 이라는 프레임워크를 알고, 공부하는게 좋다
  • dom api, event loop
profile
오늘 하루도 열심히!

0개의 댓글