inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

[코드캠프] 부트캠프에서 만든 고농축 백엔드 코스

10-05 상품 삭제 API

조회 시, select로 일부 필드만 가져올 때 GraphQL 처리

해결된 질문

238

Docker

작성한 질문수 6

0

안녕하세요 :)

아래 코드와 같이 상품 조회할 때 select를 통해 일부 필드만 가져오도록 해봤습니다.

service의 findAll 메서드에서는 유틸리티 타입으로 반환하도록 하였고,
resolver에서는 Query 데코레이터에 GraphQL에서 제공하는 PickType으로 반환하게 했는데, 에러가 발생합니다.. (적절한 값이 아니라는 에러 내용)

이런 상황에서는 메서드 반환 타입과 GraphQL 타입 처리를 어떻게 해주는 것이 좋은지 감이 잘 안 잡혀서 질문드려요!

 

// products.resolver.ts

  @Query(() => [PickType(Product, ['id', 'name', 'description'])])
  fetchProducts(): Promise<Pick<Product, 'id' | 'name' | 'description'>[]> {
    return this.productsService.findAll();
  }
// products.service.ts

  findAll(): Promise<Pick<Product, 'id' | 'name' | 'description'>[]> {
    return this.productsRepository.find({
      select: ['id', 'name', 'description'],
    });
  }

javascript node.js docker rest-api nestjs

답변 1

1

노원두

안녕하세요! Docker님!

graphql에서는 요청에 들어오는 타입을 @InputType(),
응답으로 나가는 타입을 @ObjectType()을 통해서 명시해 주셔야합니다!

Product 클래스는 @ObjectType()이 명시되어 있으시겠죠?!
하지만, PickType(Product, ['id', 'name', 'description'])으로 재정의한 타입은 @ObjectType() 이 아니기 때문에 문제가 발생한 것이랍니다!

이를 해결하는 방법으로는 새로운 타입을 만들어서 해결하실 수 있어요

@ObjectType()
class ProductInfoSet extends PickType(Product, ['id', 'name', 'description']) {}

그래프 ql 문서 사용할때 느낌표 남는거 어떻게 없애나요?

0

82

2

강의 전체 소스 코드를 받고싶습니다.

0

75

2

fontawesome 사용 문의

0

76

2

소스 코드 부탁드립니다~

0

85

2

깃 레포지터리 소스

0

80

2

커리큘럼12.css 정렬 에 나오는 과제 정답알고싶어요

0

72

2

10-01 Entity TypeOrmModule.forRoot 에 entities

0

84

3

강의 버전관련 문의입니다

0

102

2

Ubuntu 설치 관련

0

60

1

schema.gql 질문 드립니다.

0

50

1

서버 재실행시 Many to Many

0

100

3

input 관련 문의

0

89

2

Rest API 보다는 graphql이 주된 내용인데

0

130

2

강의 전체 소스코드 받을수있을까요?

0

154

1

도커볼륨 마운트 관련

0

126

2

findOne 타입스크립트오류

0

108

1

http => htrtps 호출 인증서 신뢰 오류

0

348

1

self-signed certificate in certificate chain 에러 발생

0

410

1

mongoose 설치 오류

0

141

1

특정 API, 특정 IP 허용 (단일경로에 CORS 활성화)

0

280

2

08-06

0

177

3

구조랑 패턴 관련해서 질문

0

124

2

mydocker

0

128

2

coolsms statuscode 2000 인데 전송안돼는 경우 확인.

0

156

1