-
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 만 넣어주면된다.
'개발' 카테고리의 다른 글
graphql+react 변수를 가지고 Mutation 실행하기 (0) 2020.02.26 mongoDB 셋업하기 (0) 2020.02.18 graphql 데이터 api만들고 연동 , 타입관 관계형성하기 (0) 2020.02.11 graphql 시작하기 (0) 2020.01.28 react firebase 연동 auth 정보 db, app에 저장하기 (0) 2020.01.07