스터디/React

[prisma] next 프레임워크에 prisma 연동해보기 (풀쿼리)

_leezoee_ 2022. 5. 19. 11:50

나는 그냥 단순히 select * from user 조인 user level 을 하고 싶었는데 구글 예제들은 다들 prisma 모델을 사용 한 것들만 나와서 쪼금 삽질 한 결과 prisma에 $queryRaw를 사용하면 풀쿼리를 날릴수 있음을 알게되었다!

(지금 라이브러리를 prisma 쓸지 serverless-mysql 쓸지 고민햇는데 나중에 디비 mysql 안 쓸 경우도 봐야하니까 prisma로 선택 :D)

 

도움이 된 블로그 글을 먼저 소개

https://velog.io/@iamhayoung/prisma-schema

 

Prisma & MySQL 시작하기

Node.js, TypeScript용 ORM인 Prisma를 MySQL과 함께 도입해봅니다🤓

velog.io

 

1. prisma 다운로드

npm i prisma dotenv -D
npm i @prisma/client
npx prisma init

vsc에 cmd로 설치 하다가 몇몇 에러가 났는데 친절하게 뭐가 문제인지 주절주절 소개해줘서 에러 읽으면 고칠수 있음.

 

2. 필요한 config 설정해주기

.env 파일과 prisma/schema.prisma 가 자동으로 생성됨.

env 파일에서는 DATABASE_URL을 설정하고, schema.prisma에서는 말그대로 스키마에 대한 설정을 해줌, 기본 db config랑 VO 같은거

[.env]
[schema.prisma]

 

3. 페이지에서 db 가져다 써보기

//pages>index.js

import { PrismaClient } from '@prisma/client'

export default function Home() {
  return (
    //...소스중략
  )
}

const prisma = new PrismaClient();

export async function getStaticProps() {
  const posts = await prisma.$queryRaw
      `SELECT A.*, B.* FROM user_table as A 
       inner join user_level_table as B on A.user_level=B.sid`
  console.log(posts);
  return {
    props : { posts }
  }
}

[npm run dev 결과 console]

 

끝!

 

prisma에서 제공하는 메소드들을 사용하는법은 좀 더 스터디가 필요할 거 같으니 

다음에 기회되면 포스팅 할 계획