[TIL] Prisma 정리

Manta·2024년 9월 12일
0

TIL

목록 보기
8/19

Prisma란?

prisma는 ORM으로, 객체를 schema로 정의한다음 그 객체와 내가 선택한 데이터 베이스를 연결시켜주는 매개체이다.

server side쪽에서 데이터 베이스를 CRUD가능하도록 해준다.

  • include 옵션은 쿼리 응답에 join되는 테이블의 일부 필드를 포함해줄 수 있게 함

  • select를 중첩해서 relation field의 특정 값을 가져올 수 있게 함

  • 가령 include문을 사용해 특정한 field를 join할 수 있음

const user = await prisma.user.findFirst({
  include: {
    posts: true,
  },
})
  • include를 중첩해서 여러 테이블의 값을 가져올 수도 있음
const user = await prisma.user.findFirst({
  include: {
    posts: {
      include: {
        categories: true,
      },
    },
  },
})
  • select절을 중첩으로 사용해 일부 필드만을 가져올 수도 있음
const user = await prisma.user.findFirst({
  select: {
    name: true,
    posts: {
      select: {
        title: true,
      },
    },
  },
})
  • include문과 select문을 중첩해서 사용할수도 있음
const user = await prisma.user.findFirst({
  include: {
    posts: {
      select: {
        title: true,
      },
    },
  },
})
  • 단 include와 select는 같은 level에서 사용 불가능하며, 이 때는 중첩 select문을 사용해야 함
// Invalid `prisma.user.findUnique()` invocation:
const user = await prisma.user.findFirst({
  select: { // 같은 level에서 select, include 중복
    email:  true
  }
  include: { // 같은 level에서 select, include 중복
    posts: {
      select: {
        title: true
      }
    }
  },
})

// 아래와 같이 쿼리를 수정해야함
const user = await prisma.user.findFirst({
  select: {
    // This will work!
    email: true,
    posts: {
      select: {
        title: true,
      },
    },
  },
})
profile
공부할게 너무 만타🫠

0개의 댓글