ARCHIVE/DB

[DB] Prisma

man_on 2021. 10. 10. 22:46
반응형

 

 Prisma

 

Modern Database Access for TypeScript & Node.js

 > Typescript 와 Node.js 환경에서 데이터베이스에 대한 접근을 쉽게 하도록 도와주는 소프트웨어(오픈소스)

 > 기존에 Node 환경에서 사용되던 다른 ORM(Object Relational Mapper)들을 대체

 

//Prisma 패키지 설치

npm install prisma --save-dev
npm install @prisma/client --save
//nodemon : 코드변경 서버에 바로 적용
//dotenv : 환경변수를 사용할 수 있게 해줌

npm install dotenv nodemon -D

 

> Prisma 시작 

//명령어 확인
npm prisma   

//prisma 초기세팅
npx prisma init

 

> DB연결

// prisma/schema.prisma

datasource db {
	provider = "mysql"
    url = env("DATABASE_URL")
}
// .env (gitingnore에 추가)
DATABASE_URL = "mysql://USERNAME:PASSWORD@localhost:3306/DATABASE_NAME"

 

 

> prisma model 생성

 코드로 데이터베이스를 생성 = '모델을 만든다'

 모델링 예시 (user)

더보기
model articles {
  id         Int             @id @default(autoincrement())
  user_id    Int
  title      String
  body       String
  created_at DateTime?       @default(now())
  updated_at DateTime?
  deleted_at DateTime?
  users      users           @relation(fields: [user_id], references: [id])
  comments   comments[]

  @@index([user_id], name: "user_id")
}

model comments {
  id         Int       @id @default(autoincrement())
  article_id Int
  user_id    Int
  body       String
  created_at DateTime? @default(now())
  updated_at DateTime?
  deleted_at DateTime?
  articles   articles  @relation(fields: [article_id], references: [id])
  users      users     @relation(fields: [user_id], references: [id])

  @@index([article_id], name: "article_id")
  @@index([user_id], name: "user_id")
}

model users {
  id         Int          @id @default(autoincrement())
  email      String       @unique
  password   String
  created_at DateTime?    @default(now())
  updated_at DateTime?
  deleted_at DateTime?
  articles   articles[]
  comments   comments[]
}

 

 

> Migration 

 : 모델을 테이블로 변경 (=마이그레이션)

npx prisma migrate dev --name init

마이그레이션이 성공하면 prisma/migrations 디렉토리에 생성시각_init 이라는 이름의 마이그레이션 폴더가 생성

내부에는 데이터베이스에 직접 테이블을 생성해줄 migration.sql 파일 생성

반응형

'ARCHIVE > DB' 카테고리의 다른 글

Authentication / Authorization ( 인증/인가 )  (0) 2021.11.19
[DB] Prisma 기초  (0) 2021.10.10
[DB] ORM  (0) 2021.09.16
[DB] C.R.U.D  (0) 2021.09.16
[DB] MySQL  (0) 2021.09.15