개발/PrismaORM

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

Zaein 2023. 7. 31. 18:31

 

 

 

 

1. distinct - 중복 제거

const uniquePostTitles = await prisma.post.findMany({
  distinct: ['title'],
});

distinct에 중복 제거를 적용하고싶은 컬럼명을 작성하면 된다.

 

 

[
  {
    Id: 1,
    title: 'abc',
  },
  {
    Id: 2,
    title: 'efg',
  },
  {
    Id: 3,
    title: 'abc',
  },
  {
    Id: 4,
    title: 'efg',
  },
]

위와 같은 데이터에 사용할 경우

 

[
  {
    Id: 1,
    title: 'abc',
  },
  {
    Id: 2,
    title: 'efg',
  }
]

이처럼 중복된 필드값을 가지고 있는 데이터들은 그 중 더 낮은 id값을 가지고 있는 데이터 한개만 표시된다.

 

 

 

 

2. cursor - 리스트를 특정 위치부터 불러오기 (페이지네이션)

// 클라이언트에서 이후 페이지 요청이 왔을 때
const PAGE_SIZE = 10;
const lastPostId = ...; // 이전 페이지의 마지막 게시물의 id

const nextPage = await prisma.post.findMany({
  take: PAGE_SIZE,
  cursor: {
    id: lastPostId,
  },
});

한 페이지에에 게시글을 10개씩 보여주는 로직을 작성하기로 했다면

한 페이지당 가져올 게시글의 갯수를 지정해주고 (take : 다음 순서에서 설명하겠음)

cursor에 이전 페이지의 마지막 게시글 Id를 입력해 그 이후 10개의 게시글을 가져올 수 있도록 해준다.

 

 

 

 

3. take - 반환할 데이터의 갯수를 지정

const users = await prisma.user.findMany({
  take: 5,
});

처음 다섯개의 데이터만 불러오기

 

const users = await prisma.user.findMany({
  take: -5,
});

뒤에서 부터 다섯개의 데이터만 불러오기

 

 

 

 

참고: Prisma ORM 공식문서

https://www.prisma.io/docs/reference/api-reference/prisma-client-reference