DB에게 특정한 데이터를 보여달라는 Client의 요청이다.
const typeDefs= gql`
type Movie {
title: String
year: Int
}
type Query {
movies: [Movie]
movie: Movie
}
`;
타입을 정의해주는 곳 typeDefs에서 Movie타입과 Query타입을 정의한 코드
Query타입은 movies와 movie로 구성된다.Movie타입은 title과 year로 구성된다.Mutation은 CRUD중 Create, Update, Delete를 당담하는 Query문이다.
const typeDefs = gql`
type Movie {
title: String
year: Int
}
type Query {
movies: [Movie]
movie: Movie
}
type Mutation {
createMovie(title: String!, year: Int): Boolean
deleteMovie(title: String!): Boolean
}
`;
typeDefs에서 Mutation타입을 정의한 코드다.
createMovie
-String타입의 title과 Int타입의 year를 인자로 갖는다.
-title은 필수 인자
-return 타입: Boolean
deleteMovie
-String타입의 title을 인자로 갖는다.
-title은 필수 인자
-return 타입: Boolean
resolver란 schema에서 정의된 동일한 유형의 Data 또는 해당 Data에 관한 promise를 반환하는 함수이다. 실제로 실행하는 역할을 한다고 보면된다.
resolver는 4개의 인자를 받을 수 있다.
FunctionName: (parent, args, context, info) => data;
parent: 부모 resolver에서 반환된 객체
args: field에 전달해야 될 인수를 포함한 객체
(context, info는 지금 단계에선 스킵^q^;)
const resolvers = {
Query: {
movies: () => [],
movie: () => ({ title: "오이시쿠나레", year: 2022 }),
},
Mutation: {
createMovie: (_, { title, year }) => {
console.log(title, year);
return true;
},
},
};
resolver에서 Query와 Mutation이 실행할 내용을 정의한 코드다.
QueryMutationconst server = new ApolloServer({
typeDefs,
resolvers,
});
Apollo에서 제공해주는 Query IDE툴 playground에서 코드를 테스트해보자!
query{
query_name{
arg1,
arg2,
...
}
}


mutation{
mutation_name(arg1:_, arg2:_)
}

