본문 바로가기
TIL

Nodejs 숙련 이력서 개인과제 완료(1)

by 황민도 2024. 5. 29.

내일배움캠프 스파르타 코딩클럽

 

시작하기에 앞서 배포에 대해 잠시 얘기하고 넘어갈까 한다.

 

배포를 하려고 ubuntu 에 git clone 하고

.env 에도 기존 코드를 다시 되살려주고 했는데 

잘 동작하던 코드들이 왜안될까? 

 

첫번째 문제

오랜만에 접근하였더니 보안그룹에 들어가 인바운드 규칙 포트를 편집해줘야 한다는걸 까먹었다. 

 

 

두번째 문제

우리는 로컬에서 myspl에 prisma schema 를 push 하기 위해 

npx prisma db push 라는 명령어를 사용했다는 것을 알것이다.'

그렇게 하면 자동적으로 yarn prisma generate 가 실행되는데

허나 ubuntu 에서는 그작업을 하지 않았다.

그리하여 yarn prisma generate 로 prisma 를 수동적으로 입력해주니

아래와 같이 설치되며 모든 코드들도 정상 작동을 하였다. 

 

이렇게 해결을 하고 이성일 튜터님 의 더욱 상세한 멘토링은 아래와 같았다.    

 

EC2 배포 시 Prisma가 DATABASE_URL을 못 찾는다는 에러가 나온다면 아래 명령을 실행해 주세요.

yarn prisma generate 또는 npx prisma generate

  • Prisma는 Schema를 정의하면 맞춤으로 사용할 수 있는 코드를 생성해 줍니다. (ex: prisma.users.create, prisma.users.findFirst)
  • 이 코드를 생성해 주는 명령이 바로 위의 명령어인데, 로컬에서 개발할 때에는 prisma db push 라는 명령을 실행 할 때 자동으로 generate가 실행되어서 아무 문제 없이 실행이 됐을겁니다.
  • 해당 코드가 node_modules 안에 생성 되기에, Git으로 관리되지 않습니다. 그래서 배포할 때 clone을 받으면 해당 코드가 포함되어 있지 않아, 위의 명령을 통해서 직접 생성해줘야 합니다.

 

 

 

자 이제 과제를 시작해 보도록 하겠다.

디렉터리

 

< README.md >


# history

1. npm install -g yarn
2. yarn init -y
3. yarn add -D nodemon
4. yarn add -D prettier
5. npm install -g node-pre-gyp // bcrypt 설치 전 필요
6. yarn add express prisma @prisma/client cookie-parser jsonwebtoken joi dotenv bcrypt winston
7. git init
8. git remote add origin git@github.com:hwangmindo/MDSTART-SHOP-RESUME.git
9. git branch -M main
10. git add -A
11. git commit -m"
12. git push -u origin main


# 목표

3. MySQL, Prisma 데이터베이스
4. JWT, MIddleware 인증 인가 (검증)
jwt.sign({ userId: user.userId, }, "customized_secret_key")
jwt.verify(token, 'customized_secret_key')

5. bcrypt password 보안성 (hash, compare)
6. Bearer 토큰 형식 활용
res.cookie("authorization", `Bearer ${token}`)

7. aws ec2 배포


# Develop

개발 1
1. 디렉터리 가이드 라인 생성

개발 2
1. DB연결 npx prisma init (prisma를 활용해 myspl db에 연결)
2. schema.prisma 작성후 npx prisma db push

개발 3
1. 회원가입 api < users.router.js >
2. 로그인 api < users.router.js >

개발 4
1. 사용자 인증 < auth.middleware.js >
2. 내 정보 조회 api < users.router.js >

개발 5
1. 이력서 생성 api < resumes.router.js >
2. 이력서 목록 조회 api < resumes.router.js >
3. 이력서 상세 조회 api < resumes.router.js >
4. 이력서 수정 api < resumes.router.js >
5. 이력서 삭제 api < resumes.router.js >

# 관계

1. 1:N Users / resumes

 

 

< API 명세서 >

 

 

< ERD DIAGRAM >

ERD 작성은 schema 구성과 같게끔 하였으나 사실상 이렇게 작성하는게 맞는지 모르겠다. < 회고 >

 

시작은 이쯤 해두고 다음 TIL은 코드를 시작해 보겠다.