Creating Queries with Arguments & Mutation?
04 Nov 2020 | react nextCreating 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;