[Prisma, PlanetScale, NextJS API Routes] 맛보기 1탄

nyongho·2023년 8월 9일
0

NextJS

목록 보기
5/6

Prisma는 PostgreSQL, MySQL, MongoDB 등 다양한 DB와 쉽게 상호작용 하기 위해 사용한다.

Prisma를 작동시키기 위해서는 터미널에 다음의 커맨드를 입력하면 된다.

npx prisma

prisma/schema.prisma 파일이 핵심적인 역할을 한다.

  1. Model들을 DB에 Push하고 SQL Migration을 자동으로 처리해준다.
  2. DB와의 상호작용을 위해 Client를 생성하고 자동완성으로 타입들을 추가해준다.

PlanetScale은 MySQL-compatible serverless platform이다.

PlanetScale에 Vitess가 내장되어 있는데 Vitess는 원래 Youtube를 scale하기 위해 만들어졌다. Youtube의 엄청난 양의 트래픽, 데이터를 처리하기 위해 DB를 확장하고 최적화하기 위한 솔루션을 제공하기 위해 만들어졌다는것이다!

그에 따라 많은 대기업들이 MySQL을 scale하기 위해 쓰는 방법으로 꼽힌다.

PlanetScale에 DB를 생성하고 다음의 명령어를 통해 DB에 연결한다.

pscale connect [db name]

그러면 DB에 연결하기 위한 URL을 리턴해줄텐데 .env 파일의 DATABASE_URL에 해당 값을 넣어주면 DB와 나의 Prisma는 연결된 것이다.

만약 생성한 DB를 테스트해보고 싶다면 다음의 커맨드를 입력하면 관리할 수 있는 페이지가 브라우저에 뜰 것이다.

npx prisma studio

NextJS에서 api 폴더 내부에 client-text.tsx 파일을 만들어 Prisma와 PlanetScale을 연동한 것을 테스트해본다.

참고로 api 폴더 내부의 client-test.tsx는 NextJS 환경에서는 API 엔드포인트가 된다. amazing!

export default async function handler(req: NextApiRequest, res: NextApiResponse) {
  await client.user.create({
    data: {
      email: "hi",
      name: "hi",
    },
  });

  res.json({
    ok: true,
  });
}

PERFECT!

profile
두 줄 소개

1개의 댓글

comment-user-thumbnail
2023년 8월 9일

공감하며 읽었습니다. 좋은 글 감사드립니다.

답글 달기