기억 휘발 방지소

Node.js와 AWS RDS 연동 with Express, Prisma 본문

Web/Node.js

Node.js와 AWS RDS 연동 with Express, Prisma

choice91 2022. 2. 9. 21:34
728x90
반응형

AWS RDS 인스턴스 생성도 해봤으니까 Node.js와 연결을 해보자
프레임워크는 Express, ORM은 Prisma를 사용했고 모든 코드는 TypeScript로 작성했다.

Prisma를 사용하기 위해서는 먼저 @prisma/client를 설치해야한다.
아래 명령어로 설치하면 된다.

npm install @prisma/client

그리고 Prisma 프로젝트를 생성한다.

npx prisma init


prisma라는 폴더 안에 schema.prisma라는 파일이 자동으로 생성된다.
이 파일은 스키마를 정의하기 위한 초기파일이다.

// prisma/schema.prisma 
generator client { 
  provider = "prisma-client-js" 
} 

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

그리고 .env도 같이 생성되는데 이 파일은 프로젝트의 환경변수를 정의하는 파일이다.

나는 간단하게 User 스키마 하나만 만들어봤다

generator client { 
  provider = "prisma-client-js" 
} 

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

model User { 
  @@map(name: "user") 
  id Int @id @default(autoincrement()) 
  username String @unique @db.VarChar(255) 
  password String @db.VarChar(100) 
}


그리고 prisma migrate CLI 명령을 실행한다. 명령을 실행하면 데이터베이스 테이블이 생성된다.

npx prisma migrate dev --name init


아래 작성한 코드로 데이터를 입력했다.

// routes/userRouter.ts 
import { Router } from "express"; 

import { createUser } from "../controllers/userController"; 

const router = Router(); 
router.post("/", createUser); 

export default router;
// controller/userController.ts 
import { RequestHandler } from "express"; 
import { PrismaClient } from "@prisma/client"; 

const prisma = new PrismaClient(); 

export const createUser: RequestHandler = async (req, res, next) => { 
  const { username, password } = req.body; 
  try { 
    const newUser = await prisma.user.create({ 
      data: { 
        username: username, 
        password: password, 
      }, 
    }); 
    return res.status(201).json({ message: "Created user!", user: newUser }); 
  } catch (error) { 
    next(error); 
  } 
};


데이터를 입력했을 때 Workbench와 EC2에서 제대로 들어갔는지 확인해보았다.

Workbench

 

EC2

데이터가 제대로 들어갔음을 확인할 수 있다 👍

728x90
반응형