개발
GraphQL Mutation 스키마 만들어 delete,edit 해보기
덤벨로퍼
2020. 2. 12. 20:31
Mutation 은 데이터를 추가 수정 삭제등 할때 사용한다.
다음은 user를 add 해볼것이다.
Root Query 처럼 Mutation 을 작성한다.
const mutation = new GraphQLObjectType({
name:'Mutation',
fields:{
addUser:{
type:UserType,
args:{
firstName:{type:new GraphQLNonNull(GraphQLString)},
age:{type:new GraphQLNonNull(GraphQLInt)},
companyId:{type:new GraphQLNonNull(GraphQLString)},
},
resolve(parentValue,{firstName,age}){
return axios.post(`http://localhost:3000/users`,{firstName,age})
.then((res)=>res.data);
}
}
}
})
GraphQLNonNull을 사용해 반드시 이름과 나이를 입력해야 하도록 했고
axios.post를 통해 데이터를 추가한다. (id는 임의로 자동으로 들어간다)
deleteUser:{
type:UserType,
args:{
id:{type:new GraphQLNonNull(GraphQLString)}
},
resolve(parentValue,args){
return axios.delete(`http://localhost:3000/users/${args.id}`)
.then(res=>res.data);
}
}
deleteUser역시 add와 비슷하게 필요한 Id 를 받고 axios.delete를 사용하면 쉽게가능하다ㅣ
edit User 은 바꾸고 싶지않은 데이터는 유지하기위해 patch 메소드를 사용한다.
editUser:{
type:UserType,
args:{
id:{type: new GraphQLNonNull(GraphQLString)},
firstName:{type:GraphQLString},
age:{type:GraphQLString},
companyId:{type:GraphQLString},
},
resolve(parentValue,args){
return axios.patch(`http://localhost:3000/users/${args.id}`,args)
.then(res=>res.data);
}
}
args 에 들어가는 id,firstName, age companyId 로 해당 user를 바꿔준다.
firstName 만 바꾸고싶으면 mutation 에서 firstName 만 넣어주면된다.