노마드코더 인스타그램 클론코딩 바로가기 https://nomadcoders.co/instaclone
GraphQL에 대해서 한번 더 복습하고 Prisma에 대한 기초 지식 다지고 클론 Start !
npm init -y
npm install apollo-server graphql
yarn add nodemon --dev
nodemon을 사용함으로써 변경사항을 적용하기 위해 서버를 죽이고 재실행하는 작업을 해주지 않아도 된다!!
package.json 추가
"scripts":{ "dev":"nodemon --exec node server.js" }
babel이란 node의 버전에 따라 최신의 JS문법을 사용했을때 이해하지 못하는 경우가 발생하는데
babel을 사용해 줌으로써 browser가 이해할 수 있는 JS코드로 변환해준다.
즉 코드에 따라 계속해서 node버전을 바꿔야하는 불편함을 해결
yarn add --dev @babel/core
yarn add --dev @babel/preset-env
yarn add --dev @babel/node
변경해줘야 하는 사항
"scripts":{
"dev":"nodemon --exec node server.js"
}
{
"presets":["@babel/preset-env"]
}
babel/preset-env : 코드가 변환되어야 하는지 아닌지를 판단
Prisma는 ORM이다.
Object Relatinal Mapping 즉 객체 관계 매핑의 줄임말이다.
객체지향프로그래밍(OOP)는 클래스라는 개념이 있고 관계형DB에는 테이블이라는 개념이 있다.
이 클래스와 테이블을 자동으로 매핑하는 것을 의미한다.
따라서 ORM을 이용해주면 따로 SQL을 사용하지 않아도 객체(클래스)를 통해서 간접적으로 데이터베이스에 접근이 가능해지는 것이다.
Prisma + TypeScript의 조합이 👍
npm install prisma -D
npx prisma init
- 위의 작업을 마치면 prisma/schema.prisma파일과 .env파일이 생성됨
- Postgresql app 설치
- Postgresql app을 이용해 DB생성하고 이를 사용하기 위해 .env에서 URL의 사용자명과 DB명 수정
- Postgresql DB 생성 :
CREATE DATABASE instaclone
- Postgresql DB 제거 :
DROP DATABASE instaclone
model Movie{
id Int @id @default(autoincrement())
title String
year Int
genre String?
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
}
npx prisma migrate dev
-> 이를 package.json에서 migrage
명령어로 지정해줘서 쉽게 사용 Prisma는 기본적으로 모든 필드들이 필수사항 | 선택사항 지정방법 : Type?
Graphql은 기본적으로 모든 필드들이 선택사항 | 필수사항 지정방법 : Type!
EX) 위의 Movie model에 관련된 Graphql의 Type
const typeDefs = gql`
type Movie{
id:Int!
title:String!
year:Int!
genre:String
createdAt:String!
updatedAt:String!
}
`