본문 바로가기
TIL

TIL 240605 - where에서 배열 중 포함된 값 가져오기 / 해당하는 개수 반환하기

by lemonpie611 2024. 6. 5.

1. where에서 배열 중 포함된 값 가져오기

followId라는 배열에 userId가 저장되어있고 배열 내 id에 해당하는 데이터를 모두 가져와야 하는 상황

처음에는 prisma.findMany를 배열을 순회하며 반복문을 돌려야되나 고민했는데, 너무 비효율적이라 다른 방법을 찾아봄.

where에서 in을 쓰면 된다...

const followPosts = await prisma.posts.findMany({
  where: {
    UserId: {
      in: followId,
    },
  },
}

 

2. 데이터베이스를 read 할 때, 자식 데이터베이스에 부모와 연결된 개수 반환하기

LikePosts 데이터베이스가 Posts와 1:N 관계이고, 해당 post와 연관된 모든 LikePosts의 개수를 나타내고 싶은 상황

LikePosts를 따로 findMany로 불러와, 불러온 데이터 배열의 길이를 구하는 식으로 구현하였으나, _count를 쓰면 따로 read를 한번 더 하지 않아도 해결됨

    const post = await prisma.posts.findMany({
      where: {
        group,
        User: {
          UserInfos: {
            role: group,
          },
        },
      },
      select: {
        _count: {
          select: {
            LikePosts: true,
          },
        },
      },
      orderBy: {
        createdAt: 'desc',
      },
    });

 

이게 되네