상세 컨텐츠

본문 제목

prisma 셋업방법

카테고리 없음

by 폴리프레임 2023. 6. 6. 19:36

본문

반응형

프리스마는 Node.JS 와 TypeScript에 최적화된 ORM으로서, 현재  Node.js v14.17.0 이상을 필요로 하며,  아래 요소로 구성되어 있습니다. 아래 셋업 과정을 통해서 의미를 확인 할 수 있습니다.

  • Prisma Client: Auto-generated and type-safe query builder for Node.js & TypeScript
  • Prisma Migrate: Declarative data modeling & migration system
  • Prisma Studio: GUI to view and edit data in your database

Prisma 셋업방법

1.프로젝트 폴더 생성하고 이동합니다.

mkdir hello-prisma
cd hello-prisma

2. 타입스크립트 프로젝트를 초기화하고, 타입스크립트와 node 관련 팩키지 두가지를 설치합니다. 

npm init -y
npm install typescript ts-node @types/node --save-dev

3. 타입스크립트도 초기화 합니다. ( tsconfig.json 파일 생성 )

npx tsc --init

4. 개발모드로 Prisma CLI 를 설치합니다.

npm install prisma --save-dev

5. Prisma CLI의 init 명령으로 Prisma 를 sqlite 와 연결 셋업합니다. (prisma 폴더, .env 파일, deb.db 파일 생성됨)

npx prisma init --datasource-provider sqlite

6. prisma/schema.prisma 파일에 모델을 만듭니다.

// 위 5 단계에서 자동 생성 됨
generator client {
  provider = "prisma-client-js"
}

datasource db {
  provider = "sqlite"
  url      = env("DATABASE_URL")
}
// 추가 입력은 아래 부분으로, User와 Post 두 개의 모델 입력 
model User {
  id    Int     @id @default(autoincrement())
  email String  @unique
  name  String?
  posts Post[]
}

model Post {
  id        Int     @id @default(autoincrement())
  title     String
  content   String?
  published Boolean @default(false)
  author    User    @relation(fields: [authorId], references: [id])
  authorId  Int
}

7. 아래 명령으로 데이터 베이스 테이블을 만들기 위해 마이그레이션합니다.

npx prisma migrate dev --name init

그러면 prisma/migrations 폴더가 생성되고, 최종적으로 새로운 migration.sql 이 생성됩니다.  이것에 근거하여 쿼리를보내려면, script.ts 파일이 필요 합니다. 

 

8. script.ts 파일을 만들고, 아래 내용을 삽입한다.

// script.ts 파일

import { PrismaClient } from '@prisma/client'

const prisma = new PrismaClient()

async function main() {
  // ... 퀘리 작성부분
}

main()
  .then(async () => {
    await prisma.$disconnect()
  })
  .catch(async (e) => {
    console.error(e)
    await prisma.$disconnect()
    process.exit(1)
  })

9. 현재까지의 폴더 구조는 아래와 같습니다.

폴더 구조

10, 아래 퀘리의 예제들을 script.ts 파일의 // ... 퀘리 작성부분 에 넣고, 터미널에서 npx ts-node script.ts 하면 결과를 볼 수있습니다. ( 쿼리 별로 하나씩 입력 )

// 데이터 입력

const user = await prisma.user.create({
    data: {
      name: 'Alice',
      email: 'alice@prisma.io',
    },
  })
  console.log(user)
// 입력된 모든 데이터 불러오기

const users = await prisma.user.findMany()
  console.log(users)
// 연결된 User 와 Post 데이터 입력

const user = await prisma.user.create({
    data: {
      name: 'Bob',
      email: 'bob@prisma.io',
      posts: {
        create: {
          title: 'Hello World',
        },
      },
    },
  })
  console.log(user)
// 연결된 모든 데이터 불러오기

const usersWithPosts = await prisma.user.findMany({
    include: {
      posts: true,
    },
  })
  console.dir(usersWithPosts, { depth: null })

11. Studio 프로그램을 활용하면, GUI 형태로 작업 할 수 있습니다. 아래 명령으로 완성 할 수 있습니다.

npx prisma studio