https://be-student.tistory.com/21
이전 글을 읽어보시면 좋습니다
여기까지 만들어 졌다면 이제 Mutation은 쉽습니다
import { Field, InputType } from '@nestjs/graphql';
@InputType()
export class PetsInput {
@Field()
name: string;
@Field({ nullable: true })
kind?: string;
}
일단 pets.input.ts 라는 인풋을 관리하는 클래스를 만들어 두도록 하겠습니다. 역시나 nullable 을 통해서 ?를 표현해주어야 합니다.
Resolver
import { Args, Mutation, Query, Resolver } from '@nestjs/graphql';
import { PetsInput } from './dto/pets.input';
import { Pets } from './pets.entities';
import { PetsService } from './pets.service';
@Resolver((of) => Pets)
export class PetsResolver {
constructor(private readonly petsService: PetsService) {}
@Query((returns) => [Pets])
async pets(): Promise<Pets[]> {
return this.petsService.findAll();
}
//추가된 부분
@Mutation((returns) => Pets)
create(@Args('petInput') petsInput: PetsInput): Promise<Pets> {
return this.petsService.create(petsInput);
}
}
이렇게 Mutation부분을 추가해야 합니다.
Service
import { Injectable } from '@nestjs/common';
import { InjectRepository } from '@nestjs/typeorm';
import { DeepPartial, Repository } from 'typeorm';
import { PetsInput } from './dto/pets.input';
import { Pets } from './pets.entities';
@Injectable()
export class PetsService {
constructor(
@InjectRepository(Pets) private readonly petsRepository: Repository<Pets>,
) {}
//추가된 부분
async create(petInput: PetsInput): Promise<Pets> {
const newPet = this.petsRepository.create(petInput);
return this.petsRepository.save(newPet);
}
async findAll(): Promise<Pets[]> {
return this.petsRepository.find();
}
}
이렇게 Service부분에 추가로 Mutation이 가능하도록 처리를 해두게 되면 끝이 납니다.
이렇게 쿼리를 날려볼 수 있습니다
워크밴치에서도 실제로 되었던 것을 확인할 수 있죠
지금까지 Query, Mutation같은 기본적인 작동방법을 확인할 수 있늬 이제는 공식문서를 통해서 충분히 더 이어서 볼 수 있을 겁니다
추후에 작동할 때는
nest generate resource pets
에서 graphql 을 선택하는 방법이 더 편하겠죠
더 알아보시고 싶으신 분은
https://uchanlee.dev/NestJS/GraphQL/2/
를 통해서 보시는걸 추천합니다 공식문서를 한글로 번역해둔 곳이에요
'NestJS' 카테고리의 다른 글
NestJS Microservices overview 번역 (0) | 2022.10.02 |
---|---|
NestJS 로 GraphQL Query 만들기 (0) | 2022.09.23 |
NestJS로 GraphQL 시작하기 (0) | 2022.09.22 |