개발/PrismaORM

언젠가 사용하게 될 Prisma ORM 옵션 종류 및 설명 (2)

Zaein 2023. 8. 1. 13:47

 

 

 

 

이번 글에서는 제목에 맞지 않지만 자주 사용하는 옵션들도 다뤄볼 계획이다.

 

 

 

1. upsert - 데이터가 존재한다면 update, 존재하지 않는다면 create

const result = await prisma.user.upsert({
  where: {
    email: 'example@email.com', // 기존 데이터를 찾을 조건
  },
  update: {
    username: 'newUsername', // 기존 데이터의 필드를 업데이트할 값
  },
  create: {
    email: 'example@email.com', // 새로운 데이터를 추가할 값
    username: 'newUsername',
  },
});

where의 조건으로 데이터를 찾고, 일치하는 데이터가 존재한다면 update를 실행, 존재하지 않는다면 create를 실행한다.

(where과 create, update 는 다음 순서에서 설명)

 

 

 

 

2. create - 데이터 생성

const newUser = await prisma.user.create({ // user -> 데이터 추가할 테이블명
  data: {
    username: 'john_doe', // username -> 데이터 주가할 컬럼명
    email: 'john@example.com'
  },
});

data 안에 데이터를 생성할 컬럼명과 추가할 내용을 작성해주면 된다.

 

 

model User {
  id        Int     @id @default(autoincrement())
  username  String
  email     String  @unique
  age       Int?
}

주의할점!

위처럼 db 테이블의 구조를 보았을때

id: id값은 자동으로 생성되기 때문에 create를 해주지 않아도 된다.

username: 별 다른 표시가 없으므로 필수로 값이 들어가줘야 한다.

email: 필수로 값을 넣어줘야 하고, @unique가 있기 때문에 테이블 내 다른 email의 값과 중복되어선 안된다.

age: ? 가 있으므로 값을 넣어주지 않아도 된다.

 

 

 

 

3. where - 찾을 데이터의 조건 정의

const users = await prisma.user.findMany({
  where: {
    age: {
      gte: 18,
    },
  },
});

age가 18이상인 사용자들을 조회한다.

 

 

 

 

4. update - 기존 데이터값을 수정

const updatedUser = await prisma.user.update({
  where: {
    id: 1,
  },
  data: {
    username: 'new_username',
    age: 35,
  },
});

id가 1인 사용자의 username과 age가 변경된다.