TIL 31일차 - node 숙련주차 챌린지 개인과제 도전

박찬웅·2023년 3월 8일
0

항해99

목록 보기
36/105

23년 3월 8일

배운 것

오늘은 IV3 개인과제를 한번 도전하기로 하였다. 그래서 sequelize와 MySQL을 이용해서 API를 작성하는 것을 도전해봤다.

시도 한 것

아침에 LV2 개인과제 했던 것을 코드 보면서 복습하였고, 그리고 나서 sequelize의 강의노트를 보면서 공부하기 시작하였다.
그러다가 점심먹고 와보니까 node.js 주특기 하신 분들 중 2~3명정도는 lv3 개인과제까지 마무리 하였다고 한다. 그래서 원래는 그냥 코드 리뷰하고 sequelize의 강의노트를 복습하는 방향으로 진행 하려고 했다가. 노선을 바꿔서 챌린지 개인과제를 도전하기로 했다.

기존 mongoose에서 sequelize로 바꿔서 구현 하는건데 이게 쉽지 않았다. 기존과는 다른 방식으로 코드를 작성해야 했고 데이터베이스도 MySQL를 이용해서 구현해야 했기 때문에 개념이 완전히 달랐기에 상당히 시행착오가 많았었다

먼저 사전 작업은 다음과 같다.

# 라이브러리를 설치합니다.
npm install express sequelize mysql2 cookie-parser jsonwebtoken

# sequelize-cli, nodemon 라이브러리를 DevDependency로 설치합니다.
npm install -D sequelize-cli nodemon

# 설치한 sequelize를 초기화 하여, sequelize를 사용할 수 있는 구조를 생성합니다.
npx sequelize init

터미널에 다음과 같이 설치를 하면 된다.

# Users 모델
npx sequelize model:generate --name Users --attributes email:string,password:string
# Posts 모델
npx sequelize model:generate --name Posts --attributes UserId:integer,title:string,content:string

그런 다음에 다음과 같은 터미널에 명령을 내려서 각각의 모델을 작성해 줬다. 어쩌피 임시로 이렇게 적었고 에튜리뷰트들은 어쩌피 또 가서 수정해야 했으므로 그냥 이렇게 적어서 두개의 테이블 모델을 만들어줬다.
이후 config 파일에 가서 db 연동을 해야 했다. 거기서 유저네임과 비밀번호, 패스워드, 호스트 주소를 적어줘서 mysql 연동을 해줬다. 그리고 나서 npx sequelize db:create를 해 준다음, 이후 migrations폴더에 있는 파일들과 models의 파일을 정의를 해야 하는데 여기서 시간을 엄청 많이 먹었다. 그래도 어찌하여 4시간만에 테이블 정의는 다 마무리 하였고 그러면 npx sequelize db:migrate 해주면 테이블이 생성되었다. 혹시나 잘못되서 db를 되돌리려고 한다면 npx sequelize db:migrate:undo로 실행해주면 되었다.

그리고 나서 이제 기존처럼 회원가입 API랑 로그인 API를 구현하였다. 아주 살짝 바뀐거 말고는 LV2에서 전부 구현했던거 복붙해서 일부만 수정하면 되었기에 금방 되었다. 그리고 저녁을 먹고 게시글 작성 API에서 막혔다. 일단 코드 자체는 문제 없는데 문제는 쿠키를 불러내지 못하고 있었다. 이 부분은 팀원들이랑 상의했는데도 해결을 못하였고 오늘 기술매니저님이 오지 않는 날이라서 결국엔 여기서 구현을 중단 할 수 밖에 없었다. 이 부분은 내일 기술매니저님한테 오면 한번 의논을 해봐야 할것 같다.

해결

그렇게 LV3 과제는 마이그레이션 설정과 회원가입, 로그인 API만 구현하였고, 게시글 조회 API에서 막혀서 오늘은 여기서 마무리 하였다.

알게 된 점

이번 주차의 필수 과제인 LV2는 마무리 했지만 아직 시간이 남았고 어쩌피 MySQL로도 데이터베이스를 다뤄야 하기 때문에 도전을 해봤지만 결국 오늘안에 구현은 하지 못했다. 그래도 어느정도 sequelize의 개념은 어느정도 알게 된 것 같아서 어려웠지만 한번 도전하는데에는 후회는 없었다. 그래도 끝내 구현 못한건 아쉬웠다.

앞으로 할 일

내일은 숙련주차 퀴즈가 있는 날이라서 그거 보고 팀과제를 진행 한 후에 마저 남은시간동안 lv3 과제 도전 해볼 것 같다. 그래도 안되면 lv2 제출로 만족할 것 같다.

profile
향해 13기 node.js 백앤드

0개의 댓글