[graphQL] mutaions

seokki kwon·2022년 8월 31일
0

graphQL

목록 보기
5/7

query 를 구현하고 mutaions 수정 삭제 추가 등등 데이터조작을 구현
보통 mutaions 라는 명세에 데이터를 추가하는 로직을 작성함

삭제

typeDef

 deleteEquipment(id: String): Equipment
    insertEquipment(id: String, used_by: String, count: Int, new_or_used: String):Equipment
    editEquipment(id: String, used_by: String, count: Int, new_or_used: String): Equipment

deleteEquipment 에서 id를 받아서 Equipment 삭제된 객체를 반환

resolver

Mutation: {
      deleteEquipment: (parent, args, context, info) => { // args에서 ID를 받음
          const deleted = database.equipments
              .filter((equipment) => {
                  return equipment.id === args.id
              })[0]
              // 삭제한 id와 같은 id를 찾아서 해당 객체를 deleted에 저장
          database.equipments = database.equipments
              .filter((equipment) => {
                  return equipment.id !== args.id
              })
              // 삭제id가 포함되지 않은 equipment만 database.equipment에 저장
          return deleted  // 삭제된 객체 반환
      },

args는 각값들을 객체로 받아온다

deleted 변수에는 삭제된 객체가 저장이 된다
database에 filter 내장함수로 args.id 와 일치하지 않는것들을 반환하여 저장한다

추가

typeDef

 insertEquipment(id: String, used_by: String, count: Int, new_or_used: String):Equipment

추가할 값들을 파라미터로 받는다.

resolver

 insertEquipment: (parent, args, context, info) => {
        database.equipments.push(args);
        return args
      },

args 값을 배열에 추가해주면 된다.

수정

typeDef

 editEquipment(id: String, used_by: String, count: Int, new_or_used: String): Equipment
    editEquipment: (parent, args, context, info) => {
        return database.equipments.filter((equipment)=>{
          return equipment.id === args.id
        }).map((equipment)=>{
          Object.assign(equipment, args)
          return equipment
        })
      }
profile
웹 & 앱개발 기록

0개의 댓글