nestJS에 GraphQL 추가하기

1
post-thumbnail

GraphQL 설치

nestJS에 GraphQL을 추가해 봅시다 !

가장 먼저 패키지를 설치 합니다.

npm install --save @nestjs/graphql apollo-server-express graphql

nest를 설치 하면서 생긴 app.module.ts에 아래와 같이 작성합니다.

import { Module } from "@nestjs/common";
import { GraphQLModule } from "@nestjs/graphql";

@Module({
  imports: [GraphQLModule.forRoot({})],
})
export class AppModule {}

forRoot()메서드는 옵션 개체를 인수로 사용합니다. 이러한 옵션은 기본 드라이버 인스턴스로 전달됩니다

GraphQLModule.forRoot({
      driver: ApolloDriver,
      autoSchemaFile: true,
    }),

이 경우 이러한 옵션은 ApolloServer생성자로 전달됩니다.
autoSchemaFile true 인경우 code first 방식으로 스키마 파일이 생성되지 않고 메모리에 바로바로(on the fly) 스키마가 생성됩니다.


Resolver, Schema 생성

code first 방식으로 작성 하였기에 Schem는 따로 작성 하지 않아도 됩니다.
Nest가 Query OR Mutation 에 대한 schema는 자동으로 생성해줍니다.
Query, Mutation Type은 어떠한 로직이 있는게 아니라, 타입을 선언 해주는 것입니다.

Resolver는 GraphQL 작업을 데이터로 변환하기 위해 사용됩니다. 어떠한 타입이 선언되었으니, 해당 선언에 대한 로직을 만들어 주는곳 입니다.

restaurant.resolver.ts

import { Resolver, Query } from '@nestjs/graphql';

@Resolver()
export class Resolver {
  @Query(returns => String)
  hello() {
    return 'Hello';
  }
  @Mutation(returns => Boolean)
  Hi(){
  	return true
  }
}

@Query

  • @Query(returns => [Restaurant]) 를 통해 schema를 생성해준다
  • Query에 대한 이름은 함수의 이름으로 생성된다.

@Mutation

  • @Mutation(returns => Boolean) 을 통해 schema를 생성한다.
profile
👩🏻‍💻항상발전하자 🔥

0개의 댓글