Chapter 6. ORM 사용해보기

Arin·2025년 12월 26일

UMC 8기 - Node.js

목록 보기
8/11

실습 인증

  • prisma 라이브러리 설치
npm install @prisma/client prisma
  • prisma 설정 파일 만들기

    npm exec prisma init

    // .env
    // 나의 mysql정보를 넣으면 됨 
    DATABASE_URL="mysql://<DB_USER>:<DB_PASSWORD>@<DB_HOST>:<DB_PORT>/<DB_NAME>"
  • schema.prisma 수정

    //prisma/schema.prisma
    generator client {
        provider = "prisma-client-js"
    }
    
    datasource db {
        provider = "mysql"
        url = env("DATABASE_URL")
    }
  • Member 모델 추가

    // prisma/schema.prisma
    
    model Member {
      id            Int       @id @default(autoincrement())
      name          String?   @db.VarChar(20)
      gender        String?   @db.VarChar(10)
      age           Int?
      address       String?   @db.VarChar(40)
      specAddress   String?   @map("spec_address") @db.VarChar(40)
      phoneNum      String?   @map("phone_num")    @db.VarChar(13)
      status        String?   @db.VarChar(15)
      inactiveDate  DateTime? @map("inactive_date") @db.DateTime(6)
      socialType    String?   @map("social_type")   @db.VarChar(10)
      createdAt     DateTime? @map("created_at")    @db.DateTime(6)
      updatedAt     DateTime? @map("updated_at")    @db.DateTime(6)
      email         String?   @db.VarChar(50)
      point         Int?
    
      @@map("member")
    }
    
  • prisma의 schema 파일 수정시 자동으로 서버 재시작하도록 설정

    // package.json
    // nodemon 수정
    "dev": "nodemon -e js,json,prisma --exec \"prisma generate && node src/index.js\"" 
  • 다른 코드 전체에서 공유하도록 설정

    // src/dbConfig.js
    import { PrismaClient } from "@prisma/client";
    
    export const prisma = new PrismaClient();
  • 데이터 하나 찾기

    await prisma.member.findFirst({ 
      where: { id: 1 } 
    });
  • 데이터 생성하기

    await prisma.user.create({
      data: {
          name: "엘빈",
          email: "test@example.com",
          ...,
        }
    });
    
  • addUser 함수를 ORM을 사용하도록 수정

    // src/member.repository.js
    
    **import { prisma } from "../db.config.js"; // prisma 임포트** 
    
    export const addUser = async (data) => {
      const user = await prisma.user.findFirst({ where: { email: data.email } });
      if (user) {
        return null;
      }
    
      const created = await prisma.user.create({ data: data });
      return created.id;
    };
    
  • addMember를 ORM으로 바꾼 후 첫 API Test

0개의 댓글