JS

prisma 2 query 문제

728x90

기존의 prisma 1 버젼에서는 별 문제없이 조회되던 쿼리문이

prisma 2 가서 안되는 경우가 있다.

 

예를들어, 스키마가 아래 같이 정의 되어 있을때

model User {
    id Int @default(autoincrement()) @id
    email String @unique
    name String
    posts Post[]
}
 
model Post {
    id Int @default(autoincrement()) @id
    title String @default("")
    content String
    author User @relation(fields:[authorId] references:[id])
    authorId
}
cs

 

resolver 코드를 아래 같이 작성하고

export default {
    Query: {
        searchUser: (_, args) => {
           const { id } = args;
           return prisma.user.findOne({
               where: {
                   id
               }
           });
        }
    }
}
cs

 

 

다음과 같이 playground 에서 조회를 시도하면

{
    searchUser(id: 1) {
        id
        posts {
            id
            title
       }
    }
}
cs

 

prisma 1 의 경우, 별 문제 없이

id, posts 값을 리턴했다.

 

그러나 prisma 2 로 바뀌면서 

이렇게 조회를 시도하면 posts 가 없는 값이라고 뜨게 된다.

 

이럴때는 아래처럼 resolver 부분에 include 를 추가한다.

export default {
    Query: {
        searchUser: (_, args) => {
           const { id } = args;
           return prisma.user.findOne({
               where: {
                   id
               },
               include: {
                   posts: true
               }
           });
        }
    }
}
cs

 

 

 

이렇게 include 를 추가하면

정상적으로 playground 에 조회결과가 나오고 null 이 사라지게 된다.

728x90

'JS' 카테고리의 다른 글

# 33 가지 Javascript 필수 개념 - 6. Scope  (0) 2020.09.25
schema.prisma 정리  (0) 2020.09.10
GraphQL Server 구성  (1) 2020.09.07
webpack (1)  (0) 2020.09.06
Prisma Migration 관련 오류  (0) 2020.09.03