2레벨 리뷰(1레벨 포함)
1. 과제 요구 사항
1) 개요
- express, 몽고디비, jwt, 쿠키파서 이용
- 게시판 게시글/댓글 CRUD 구현, 예외처리, 로그인/회원가입 구현
2) 로그인/회원가입 API
- 닉네임 조건, 비밀번호 조건, 예외처리, req조건
- jwt,와 cookie이용
3) 게시글 CRUD
- 특정 조건으로 조회, 상세 조회 구현
- 작성/수정/삭제 시 상요자 인증진행, 예외처리
4) 댓글 CRUD
- 게시글과 동일
2. 구상
- API 명세서대로 진행
- 게시글이 지워질 경우 소속된 댓글도 삭제하는 기능 추가
3. 구현
1) Directory Structure
2) 스키마
- user : 닉네임과 패스워드, 닉네입은 유니크값 지정
- index : 생략
- post : 명세서대로 진행, createdAt과 updatedAt의 경우 default:Date.now로 디폴트값 지정
- comments : post와 동일, postId를 추가로 참조해줌
- versionKey:false 입력시 몽고db의 version값 누락 가능
3) 인증
- jwt 라이브러리와 user스키마 임폴트
- 이후 기본적인 인증문법 진행
4) app.js
(1) 선언부
- express, cookieparser라이브러를 불러오고 스키마와 연결 및 실행, 각 라우터들과 연결 선언
(2) 미들웨어
- body값을 받기위한 express.json
- url 쿼리값을 body로 파싱하기위한 express.urlencoded
- 쿠키 이용을 위한 cookieparser
- 각 라우터들과 미들웨어 연결
- 이후 listen으로 포트바인딩하여 서버 실행
5) 라우트
(1)auth
- 로그인과 회원가입 관리
- 기본적인 인증 문법 진행
- 정규식 등으로 아이디 형식에 제한
(2) 공통 CRUD
- C : 인증 후 바디로 데이터 받아서 post메소드와 몽구스create로생성
- R : get메소드와 몽구스find로 진행, 명세서에 맞게 데이터 가공 후 표시
- U : 인증 후 바디로 데이터 받아서 put메소드와 몽구스updateOne으로 진행
- D : 인증 후 delete메소드와 몽구스 deleteOne으로 진행
4. 리뷰
1) lv1
- api, 라우터, 미들웨어, CRUD, REST 아키텍쳐, db 등 서버의 기본적인 개념을 익힘
- 기능 구현은 전부 성공하였으나, crud 메소드와 db다루는것에 집중하여 예외처리를 신경쓰지 못하였다
2) lv2
- jwt와 cookie개념을 인증미들웨어 구현을 통해 익힘
- lv1때 소홀하였던 예외처리에 집중함
3) 기술매니저님 지적 부분
(1) lv1
- 상세 조회시 전체조회 코드를 복붙해버려서 find로 모든 데이터를 불러와 포스트아이디 값에 만든 결과로 재가공해 주었음. findById/findOne으로 코드 최적화 가능. 다음부턴 작동이 되는 코드도 섬세하게 재검토 하자.
- 게시글 삭제시 게시글만 삭제되어 댓글들이 붕 떠버림. 다음 레벨에서 개선하였음
- 예외처리(로직적인 부분과 try/catch 메소드 문법)에 미흡한 부분이 많았음. 다음 레벨에서 개선완료.
(2)lv2
- 중복 선언
이미 _id값을 commentId로 가공해 주었지만 몽고디비에 익숙하지 못하여 _id값을 굳이 누락시키는 코드가 됨
- 명세서에 update,delete 에서 해당 코드가 실패할 경우 catch단으로 넘기지 않고 try안에서 바로 예외처리를 하는 부분이 있었는데 몽구스의 update,delete 문법안에 내장된 수정/삭제 내역을 기록한 메소드를 불러와서 처리해주었음. 시도는 좋았으나, 더 안전한 예외처리를 위해 해당 문법 전체를 catch로 감싸주도록 개선함
'항해14기 본과정 > 항해14기 개발일지' 카테고리의 다른 글
[항해 14기] 개발일지19 (SQL, Sequelize) (0) | 2023.04.24 |
---|---|
[항해 14기] 개발일지18 (쿠키/세션, JWT, RDS) (0) | 2023.04.24 |
[항해 14기] 개발일지16 (Git, EC2) (0) | 2023.04.24 |
[항해 14기] 개발일지15 (몽고디비, npm 명령어) (0) | 2023.04.24 |
[항해 14기] 개발일지14 (Node.js 입문) (0) | 2023.04.24 |