나만의 작은 도서관

[TIL] 240521 캠프 37일차: Prisma를 사용해보자 본문

Today I Learn

[TIL] 240521 캠프 37일차: Prisma를 사용해보자

pledge24 2024. 5. 21. 20:56

오늘 배운 내용                                     

Prisma: SELECT 구문

Prisma의 select 구문에서 특정컬럼을 true로 지정하는 방식으로 출력할 대상을 지정한다. 예를 들어, 아래와 같이 적으면, postId, title, createdAt, updatedAt컬럼이 출력된다. (추가로 select를 따로 사용하지 않으면 모든 컬럼을 출력한다.) 

 const posts = await prisma.posts.findMany({
    // 특정 컬럼을 true로 지정하지 않으면 자동으로 출력에서 제외된다
    select:{
      postId: true,
      title: true,
      createdAt: true,
      updatedAt: true,
    }
  })

 

+연산자를 이용한 형변환

문자열 타입을 숫자로 형변환할 때 다양한 방식으로 형변환을 할 수 있다. 그 중 +연산자를 이용하면 다른 방식(parseInt()를 사용하는 방식과 같은)보다 간단하고 가독성있게 숫자 타입으로 형변환 할 수 있다.

where: {postId: +postId}, // +를 앞에 붙이면 숫자로 변경할 수 있다!

 

Prisma: scheme 사용법

Prisma를 사용하면 raw SQL의 사용없이 코드 환경에서 모델을 생성할 수 있다. 

// String? : 타입 뒤에 ?를 붙이면 null을 허용하게된다.
// @updatedAt: Prisma기능 중 하나. 데이터 변경 시 알아서 업데이트한다.
// @@ : 대문자 사용을 위한 기호
model Products {
  productId   Int     @id @default(autoincrement()) @map("productId")
  productName String  @unique @map("productName")
  price       Int     @default(1000) @map("price")
  info        String? @map("info") @db.Text

  createdAt DateTime @default(now()) @map("createdAt")
  updatedAt DateTime @updatedAt @map("updatedAt")

  @@map("Products")
}

오늘의 Trouble Shooting                  

Problem 1. Error: P3004: The `mysql` database is a system database, it should not be altered with prisma migrate. Please connect to another database.

schema.prisma에 테이블 정보를 추가하고 npx prisma db push를 했더니 아래와 같은 오류가 떴다. 

 

Solve. 새로운 데이터베이스에 연결

위 오류는 Prisma 마이그레이션을 MySQL 시스템 데이터베이스인 mysql 데이터베이스에서 실행하려고 해서 발생한 것이다. 그렇기 때문에 이미 존재하는 데이터베이스가 아닌 새로운 데이터베이스로 연결해줘야한다.

// 변경 전: 기존에 존재했던 prisma_crud 데이터베이스에 연결되어있었다.
DATABASE_URL="mysql://.../prisma_crud"	

// 변경 후: 새로운 데이터베이스 community_hub로 연결
DATABASE_URL="mysql://.../community_hub"

 

오늘 한 일은?                                       

더보기
  • OSI 계층, LAN, WAN 글 포스팅
  • Node.js 숙련주차 2주차 2-4까지 완료