[SeSACx코딩온] 웹 풀스택 2차 팀프로젝트 회고록

장현수·2023년 2월 27일
0

[간략한 프로젝트 개요]

  • 주제 : 공유 가계부 웹 '모모아'
  • 개발기간 : 2023.02.11 ~ 2023.02.25 2주간
  • 맡은 역할 : 백엔드(카카오 로그인 API, DB설계)

https://github.com/nyondoo/momoa

  • ERD

담당 기능 - BackEnd

(1) 카카오 로그인 API

카카오 로그인 API 적용을 위한 공부 과정 및 적용코드
https://velog.io/@nyondoo/카카오-로그인-API-HTTP-프로토콜-이해하기Node.js

(2) DB 설계 및 데이터 가공

(3) 가계부 공유(초대) 기능

📍배운 것 / 느낀 점

  • 카카오의 REST API를 적용하기 위해 HTTP 프로토콜을 이해해야 했다. 단순 코드의 적용이 아니라 네트워트적인 지식의 필요성을 많이 느꼈다.
  • 코드 적용을 위한 공부에 시간이 많이 걸렸지만, 지식적으로 성장하는 계기가 되어 뿌듯했다.
  • DB 설계를 하면서 정규화를 지키려고 노력하였다.
  • DB 데이터를 불러올 때 조건문을 sequelize 쿼리문으로 작성하는 데 어려움이 있었다. 그러나 그만큼 sequelize에서 복잡한 조건문을 사용해보는 계기가 되었다.
  • 데이터 처리를 최대한 서버단에서 작업해 클라이언트에서 사용할 데이터만 보내주려고 하였다. reduce()함수를 주로 사용해 효율적으로 코딩하고자 노력했다.

🛠주요 기능 구현

  1. 클라이언트단에서 받아온 인가코드로 카카오 서버에 토큰 요청하기

  2. 엑세스 토큰으로 사용자 정보 요청하기

  • 카카오 서버에서 사용자 정보를 받아와 변수에 담아주었다.
  • 이후 JWT로그인 처리를 하며 DB에 저장한다.
  1. JWT로 자체 로그인 처리하기
  • JWT엑세스 토큰과 리프레시 토큰을 발행하고, 엑세스 토큰은 cookie에 전달, 리프레시 토큰은 DB에 저장했다.
  • try catch문으로 에러처리하였다.
  • 회원정보가 없는 경우(else문) DB에 회원정보를 저장해 가입처리 한 후 동일한 작업을 수행했다.
  1. DB 설계
  • 공유 가계부 웹이기 때문에, User 테이블과 가계부 테이블인 Sheet테이블을 분리하고 DBhub테이블로 연결하였다. 각 가계부의 정보는 Info테이블로, Sheet테이블의 자식테이블로 연결하였다.
  1. Sequelize - find 조건문
  • Sequelize의 Op 모듈을 사용하여 [Op.and]로 where조건문 여러개를 사용하였다.
  • 현재 해당 연도의 월별 수입, 지출데이터를 찾아 전달하기 위해 input_date 컬럼의 연도값이 현재 연도와 동일한 값을 찾는 조건을 걸어주었다. Mysql의 YEAR함수를 사용하였다.

  1. 데이터 가공 - arr.reduce()
  • 월 별 수입 배열, 월 별 지출 배열을 각각 응답 데이터로 전달하기 위해 함수를 만들어 사용했다.
  • 날짜 데이터에서 월만 추출하여 배열 안에 {month: 월, money: 금액} 객체를 새로 만들어주었다.
  • arr.reduce()메소드를 사용하여 month값이 같은 경우 금액을 합쳐 월 별 수입/지출 배열을 만들었다.
  1. 가계부 공유
  • DBhub테이블의 guest컬럼에 초대한 사람의 email을 저장, auth컬럼값을 false(2)로 주었다.
  • 초대 받은 사람이 로그인 할 경우 guest 컬럼에서 자신의 email을 검색, auth값이 false(2)인 가계부를 초대알림에 띄우도록 했다.
  • 초대 승인버튼 클릭 시 auth값을 true(1)로 주어 가계부 열람/편집 권한을 주었다. 로그인 시 '나의 가계부' 리스트에 띄운다.
  • 초대 거절버튼 클릭 시 DBhub 테이블에서 해당 행을 삭제한다.
profile
개같이 발전하자 개발

0개의 댓글