const result = await prisma.user.findMany({
where: {
posts: {
some: {
views: {
gt: 10,
},
},
},
},
})
이 코드를 해석해보면, 유저 모델에서 다수를 찾을 건데, 조건은 유저가 게시한 posts 중 조회수가 10개 이상인 유저들만 반환한다는 의미이다.
따라서 아래와 같이 작성하였다.
searchShops: (_, { keyword }) =>
client.coffeeShop.findMany({
where: {
categories: {
some: {
name: {
startsWith: `#${keyword}`,
},
},
},
},
}),
이를 해석해보면 다수의 커피숍들을 반환할건데, 카테고리의 요소들 중 keyword로 시작하는 요소가 존재하는 커피숍들을 반환한다는 의미가 된다.
즉, 이 주제의 핵심은 1 : n 관계에서 배열의 요소 중 특정 조건에 일치하는 요소를 가진 레코드(1)를 찾으려면
n 관계에 있는 컬럼(categories)에 some을 이용하여 해당 모델의 이름(name)을 이용하여 조건(where)을 걸면 된다는 것이다.