[TIL_32] Prisma

구민기·2021년 12월 26일
0
post-thumbnail

데이터베이스를 구성하기는 했는데 그걸 어떻게 연결시켜서 어떻게 활용해주나 싶었는데

그것을 가능하게 해주는것이 Prisma 이다.

node.js 환경에서 데이터베이스에 접근을 쉽게하도록 도와주는 소프트웨어이다.

설치

npm install prisma --save-dev
npm install @prisma/client --save
// prisma를 설치해서 sequelize 와 함께 mysql을 사용할 수 있다.
npm install dotenv -dev
// 환경 변수를 사용할수 있다.
npx prisma init // prisma 초기 세팅을 해준다.

그럼 prisma 폴더가 생기고 안에 schema.prisma 파일이 생성될것이다.

// prisma/schema.prisma
datasource db {
  provider = "mysql"
  url      = env("DATABASE_URL")
}
// .env
DATABASE_URL = "mysql://USERNAME:PASSWORD@localhost:3306/DATABASE_NAME"

위와 같이 데이터베이스를 연결시켜준다.
저렇게 연결시켜준뒤에 schema.prisma 파일에 데이터베이스의 테이블을 만들어줄 수 있다.
그 과정을 "모델을 만든다"라고 한다.
node.js 환경에서 작성한 코드를 데이터베이스의 데이터 형태로 변환 시키는 것을
migration 이라고한다.

model 생성

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 마이그레이션이름

위의 명령어로 데이터베이스에 테이블을 생성할 수 있다.

API 만들기

node.js 환경에서 데이터베이스에 접근해서 테이블도 만들었는데
그러면 테이블의 데이터는 어떻게 접근(생성, 삭제 등)하나보자

prisma/client를 통해서 데이터 베이스에 접근한다.

const { PrismaClient } = require('@prisma/client')

const prisma = new PrismaClient() 

app.post('users/signup', async (req, res) => {

  const createUser = await prisma.$query.Raw`
    INSERT INTO users (email, password) VALUES (${email}, ${password});
  `
}

간단하게 적었지만 prisma.$query.Raw 를 통해서 SQL 쿼리문을 작성해서 데이터베이스에 쿼리문과 똑같이 접근할 수 있다.

0개의 댓글