Post

supabase와 prisma(1) - 기본 개념

📌시작하며

이번 프로젝트는 Next.js를 이용해 RESTful API를 작성해 DB와 상호작용하는 부분이 포함된다. 백엔드 담당자가 없이 진행하는 프로젝트인만큼, 프론트엔드에서도 간단하게 사용할 수 있는 DB 중, supabase를 이용하기로 결정했다.

이 글은 아래와 같이 이어집니다.

✅supabase

사실 supabase는 firebase와 자주 비교되는데 supabase 홈페이지에 접속해보면 스스로를 이렇게 설명한다.

Supabase는 오픈 소스 Firebase의 대안입니다. Postgres 데이터베이스, 인증, 인스턴트 API, 에지 함수, 실시간 구독, 저장소 및 벡터 임베딩으로 프로젝트를 시작하세요.

두 DB의 대표적인 차이점은 supabase는 firebase와 달리 오픈소스이며, PostgreSQL 방식을 지원한다는 것이다.

PostgreSQL은 객체-관계형 데이터베이스 관리 시스템의 하나이다.
(출처: 위키백과)

✅prisma

사실 SQL 작성에 익숙하다면 supabase만을 이용해 프로젝트를 진행할 수 있겠지만…🥲 아직 SQL 언어에 익숙하지 않다보니 코드 작성 중 어려움에 부딛혔고, prisma의 도움을 받는 것으로 노선을 변경했다.

prisma는 스스로를 이렇게 설명한다.

Prisma ORM은 오픈소스 차세대 ORM입니다. Prisma 클라이언트는 모든 Node.js(지원되는 버전) 또는 TypeScript 백엔드 애플리케이션(서버리스 애플리케이션 및 마이크로서비스 포함)에서 사용할 수 있습니다. 여기에는 REST API, GraphQL API, gRPC API 또는 데이터베이스가 필요한 모든 것이 포함될 수 있습니다.

객체 관계 매핑(Object-relational mapping; ORM)은 데이터베이스와 객체 지향 프로그래밍 언어 간의 호환되지 않는 데이터를 변환하는 프로그래밍 기법이다.
(출처: 위키백과)

이렇게 보니까 이해하기 어려운데, Prisma를 이용해 스키마 파일을 작성해 직관적인 데이터 모델링 언어로 모델을 정의하고, 이 내용을 Supabase로 migrate할수 있다!

supabase를 이용해 DB 정보를 얻어올 때도 SQL문이 아니라 JS를 이용해 작성할 수 있기 때문에 훨씬 쉽게 접근할 수 있다.😎 그럼 이제 사용해보자!

✅supabase 시작하기

먼저 supabase를 시작하자! supabase에 가입하고, 국가는 korea로 선택해 새로운 프로젝트를 만든다. 이때 생성한 비밀번호를 잘 관리하자!

✅prisma 시작하기

prisma를 설치하자!

1
yarn add prisma --dev

.env이 자동으로 만들어질텐데, 이때 DATABASE_URL을 supabase의 URI 주소로 교체해주면 된다.

URI경로: Settings > Database > URI

해당 경로의 [YOUR-PASSWORD] 부분을 위에서 설정한 비밀번호를 넣어주면 된다.

✅schema를 작성하고 migrate 하기

생성된 schema.prisma 에 들어가 필요한 model을 작성해보자!

1
2
3
4
5
6
7
8
9
10
model User {
  id      Int      @id @default(autoincrement())
  email   String   @unique
  name    String?
  role    Role     @default(USER)
  posts   Post[]
  profile Profile?
  createdAt  DateTime   @default(now())
  updatedAt  DateTime   @updatedAt
}

여기 쓰여있는 값들을 이해하기 쉽게 따로 정리해봤다.

종류
@id테이블 기본 키, 고유한 식별자
@unique해당 필드 값이 고유한 값임
@default필드 기본 값 지정
@updatedAt필드 업데이트 시간 자동 기록
now현재 날짜, 시간
autoincrement()자동으로 증가
?해당 값이 null일 수 있음

작성 후 이제 migrate 해주면 Post 테이블에 id, title, date 등이 등록 된 것을 확인할 수 있다! 최초 migrate는 다음과 같은 명령어로 이루어진다.

1
npx prisma migrate dev --name init

✅schema 변경이 필요하다면?

작성 중에 shcema 변경이 필요할 수 있다. 그럼 schema.prisma에서 원하는 대로 수정하고 다시 migrate를 꼭 해주어야 한다.

1
npx prisma migrate dev

📩마무리

이렇게 supabase와 prisma를 사용할 준비가 끝났다. 다음에는 api route를 작성해보자. 😎

🗂️참고 사이트

This post is licensed under CC BY 4.0 by the author.