인프런 커뮤니티 질문&답변

leejken530님의 프로필 이미지

작성한 질문수

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

08-05 게시판 CRUD API

데코레이터가 잘 이해가 안갑니다.

해결된 질문

작성

·

210

0

 @Field 하면 어떠한 객체에 있는것에 있는 Field 를 가져다 쓸거야~ 라고 말하면서 그러한 함수를 불러오는 건가요?? ㄷ

답변 1

0

노원두님의 프로필 이미지
노원두
지식공유자

안녕하세요! leejken530님!

데코레이터는 nestjs 자체에서 사용되는 데코레이터(ex, @Injectable())도 있고,
nestjs에서 mysql과 연동하여 사용되는 데코레이터(ex, @Column(), @Entity()) 도 있고,
nestjs에서 graphql과 연동하여 사용되는 데코레이터(ex, @Field(), @Mutation(), @Query())도 있답니다!

 

질문하신 내용을 보니 @Field()라는 데코레이터를 말씀하시는 것 같은데,
이 녀석은 nestjs에서 graphql을 연동할 때 필요하게 됩니다!

 

여기서 아래의 예시는 간단한 @Field() 데코레이터의 예시예요!

@Field(() => String)
name: string

 

위 코드는 graphql로 프론트엔드와 통신하여 데이터를 주고 받을 때, "name에는 String만을 담아서 주고받겠다!" 라는 의미가 되는 것이랍니다!
따라서, name에는 숫자 데이터를 담아서 프론트엔드와 주고 받을 수는 없겠죠?!^^

========================================================================

추가로, 수업때 진행했던 데코레이터(@) 직접 만들어보기에서 데코레이터(@)는 함수라는 것을 배우셨을 거예요.
따라서, @Field(() => String)는 graphql 라이브러리 만든 사람이 미리 만들어 놓은 함수가 되겠죠?!
따라서 위 함수에는 프론트엔드와 주고받을 name이 string 타입이 맞는지 검증하는 등의 로직이 들어있을 것 같네요!^^