🏁 목표: RDB(MySQL) 데이터 모델링, JWT, Express Middleware를 이용한 인증 로직 추가
1. API 명세서를 작성하여, 최종적 결과물을 미리 파악합니다.
2. MySQL, Prisma를 이용해 데이터베이스를 설계하고 활용합니다.
- 데이터 모델링을 통해 ERD 작성
- Prisma를 이용한 마이그레이션 코드 및 스키마 코드 작성
- JOIN을 통해 다른 Table의 데이터와 결합
3. 인증 관련 기능을 구현합니다.
- JWT(AccessToken)의 이해
- 회원가입 API, 로그인 API, 내 정보 조회 API, 인증 Middleware 구현
- 상품 관련 기능에 인증 로직 추가
.env
파일을 이용해서 민감한 정보(DB 계정 정보, JWT 비밀키 등)를 관리합니다..gitignore
파일을 생성하여 .env
,node_modules
등.prettierrc
파일을 생성하여 일정한 코드 형태를 유지할 수 있도록 설정합니다.scripts
항목에 dev
라는 이름을 추가하여 nodemon을 이용해서 서버를 실행할 수 있도록 합니다.es6문법으로 작성하기 위해 type는 module로, 저장 후 실행을 위해 nodemon사용.
model Users {
userId Int @id @default(autoincrement()) @map("userId")
name String @map("name")
email String @unique @map("email")
password String @map("password")
confirm String @map("confirm")
createdAt DateTime @default(now()) @map("createdAt")
updatedAt DateTime @updatedAt @map("updatedAt")
resumes Resumes[]
@@map("Users")
}
model Resumes {
resumeId Int @id @default(autoincrement()) @map("resumeId")
userId Int @map("userId")
title String @map("title")
content String @map("content") @db.Text
status Status @default(APPLY) @map("status")
createdAt DateTime @default(now()) @map("createdAt")
updatedAt DateTime @updatedAt @map("updatedAt")
users Users @relation(fields: [userId], references: [userId], onDelete: Cascade)
@@map("Resumes")
}
enum Status {
APPLY
DROP
PASS
INTERVIEW1
INTERVIEW2
FINAL_PASS
}
ID는 기본키이며, 자동으로 1이 올라가게 설정.
1명의 user가 n개의 resume을 작성 할 수 있으니 1:N관계로 정의 해주기.
개인 과제를 시작하였다. 인증 관련까지는 손쉽게 작성했지만 다음 포스트부터는 꽤 애를 먹고 양이 많아, 막혔던 부분만 정리해서 올릴 예정.