Creating Queries with Arguments & Mutation?

|

Creating Queries with Arguments

Graphql의 작동방식

그래프큐엘은 Query를 만나면 그 Query와 일치하는 resolvers를 찾고, 해당 함수를 실행시킨다.

그럼 Argument(전달인자)는 어떤식으로 주고 받을수 있을까?

아래 코드에서 movie 부분을 주목

import { getMovies, getById } from './db';

const resolvers = {
  Query: {
    movies: () => getMovies(),
    movie: (_, { id }) => getById(id),
  },
};

export default resolvers;

  • 첫번째 인자는 Object로, 안쓰인다면 _를 해주면된다. 두번째 인자로 아이디를 받는데, arg.id를 {id}로 작성해준 것이다.

Mutation

Mutation이란 Database 상태가 변할 때 사용되는 것이다.
change of state

※그래프큐엘에게 내 Mutation이나 Query를 요청하길 원한다면
type query나, type mutation에 넣어줘야한다!※

예시)

  • schema.graphql
type Movie {
  id: Int!
  name: String!
  score: Int!
}

type Query {
  movies: [Movie]!
  movie(id: Int!): Movie
}

# Database 상태가 변할때 사용되는것,change of state
# graphql에게 내 Mutation이나 Query을 요청하길 원한다면,
# type query나 type mutation에 넣어줘야함
type Mutation {
  addMovie(name: String!, score: Int!): Movie!
}
  • resolvers.js
import { getMovies, getById, addMovie } from './db';

const resolvers = {
  Query: {
    movies: () => getMovies(),
    movie: (_, { id }) => getById(id),
  },
  Mutation: {
    addMovie: (_, { name, score }) => addMovie(name, score),
  },
};

export default resolvers;