본문 바로가기

클라이언트/Next.js
[Next.js] Prisma 사용하여 데이터베이스 연동하기

// Prisma

- Object Relational Mapping(ORM)

- 데이터베이스와의 상호작용이 편리하다.

- DB의 모든 데이터 타입을 Prisma를 통해 정의하면 TypeScript가 지원되기 때문에 자동완성이 된다.

- 공식 사이트: https://www.prisma.io/

 

Prisma | Simplify working and interacting with databases

Build, fortify, and grow your application easily with an intuitive data model, type-safety, automated migrations, connection pooling, caching, and real-time database subscriptions.

www.prisma.io


▪ 설치

npm install prisma
npx prisma init

▪ DB 설정

prisma init 까지 수행했다면 .env 파일과 prisma 폴더가 생겼을 것이다.

.env 파일에 DATABASE_URL 을 적어준다.(.gitignore에 추가 필수!)

DATABASE_URL=""


다음으로는 prisma 폴더 안의 shcema.prisma 파일에서 db의 provider를 사용하는 데이터베이스로 변경한다.

datasource db {
  provider = "postgresql"
  url      = env("DATABASE_URL")
}

▪ schema 선언

model 모델명 {
  컬럼명 자료형 옵션
}


- 옵션에는 @id, @default, @unique, @updatedAt 등으로 조건을 추가할 수 있다.

- 자료형 뒤에 ?를 붙이면 필수가 아니라는 의미이다. >  ex: Int?


  마이그레이션

npx prisma migrate dev


- DB 변경사항을 파악하기 위해 위 명령어 실행 후 이름을 입력한다.

- Prisma Client를 생성해준다.


  Prisma Client 활용

import { PrismaClient } from '@prisma/client';

const db = new PrismaClient();

const 변수명 = await db.생성한model명.create({
	data: {
    	컬렴: 값,
    },
});
  
const 변수명 = await db.생성한model명.findMany({
	where: {
      컬럼: {
        contains: 값,
      },
    },
});

export default db;


- create: 데이터를 삽입한다.

- findMany-contains: 특정 값을 포함하고 있는 데이터들을 모두 반환한다.

  db 실행

npx prisma studio

- model과 그 안의 데이터를 확인할 수 있다.