graphQL Mutation

susu.J·2021년 7월 14일
0

mutaion으로 삭제 하기

equipment하나를 지우는 뮤테이션을 설정하겠다

type Equipment - 반환할 equipment obj 생성

const resolvers = {
  Query: {
    teams: () => database.teams
      .map((team) => {
        team.supplies = database.supplies
          .filter((supply) => {
            return supply.team === team.id
          })
          return team
      }),
    team: (parent, args, context, info) => database.teams
      .filter((team) => {
        return team.id === args.id
      })[0],
    equipments: () => database.equipments,
    supplies: () => database.supplies
  },
  Mutation : {
    deleteEquipment: (parent, args, context, info) => {
      const deleted = database.equipments
      .filter((equipment) => {
          return equipment.id === args.id
      })[0]
      database.equipments = database.equipments
      .filter((equipment) => {
        return equipment.id !== args.id
      })
      return deleted
    }
  }
}

//mutation 삭제는 equipment를 반환할거니까 해당 id로 filtering된 
//삭제 equipment를 일단 이 deleted 이 변수의값을 입력하고, 
//데이터베이스의 equipment에서는 해당 equipment의 filtering을 사용해서 
// 삭제해준 다음에 미리 지정되었던 이 delete를 반환

const server = new ApolloServer({ typeDefs, resolvers })
server.listen().then(({ url }) => {
console.log(`🚀  Server ready at ${url}`)
})

예를들어 equipment를 삭제해보자

그 삭제된 equipment가 반환되는것임

반환이 된다는것은 사용자가 "나는 이 quipment를 삭제하겠다" 하고 mutation을 보냈을때 서버로 부터 그 답신으로 그 삭제된 equipment에 정보가 온다는 뜻이다.


그래서 이 string 인자를 받는 deleteEquipment 해서
삭제된 Equipment를 반환받는 뮤테이션의 삭제를 지정해봤다.

.
.
resolver 에 mutation

.
.

id가 "notebook" 인것을 실어보내서
여기 오른쪽에 "notebook" 항목을 지워주고 그 지워진 항목을
mutation의 결과물로 받아오는 요청임


.
.

🌟 "notebook" 항목 삭제하기

.
.
.
🌟 여기 다시 보면 해당 quipments쿼리에 "notebook"이 삭제가 성공적으로 이루어진걸 확인할 수 있다 !😃

💙

Equipment 데이터 추가하기

Mutaion 추가 루트 타입

type Mutation {
  insertEquipment (
    id: String,
    used_by: String,
    count: Int,
    new_or_used: String
  ): Equipment 
  ...
}

추가할 Equipment의 요소 값들을 인자로 받고 추가된 Equipment를 반환

id: String,
used_by: String,
count: Int,
new_or_used: String

..
이 구성 요소들을 인자로 실어보내는거에요 
그결과물로는 역시 새로 추가된 Equipment  

요 Equipment를 받아오는걸로 하겠습니다.

시작🤖
index.js

🤖 resolver에 추가하기

간단히 설명하지면

여기 이 내 항목들은 모두 이 args에 실려 보내지게 되있습니다.

즉 이 args에는 id, used_by, count, new_or_used가 들어있는것입니다.
즉 이 args는 equipment와 같은데이터구조를 갖고있을거고,
이거를 database에 equipments에 push.. 추가해줌으로써
우리 목록에 추가를 해주고 그걸 그대로 결과값으로 반환한다.

🌟실행해보기

이렇게 실어 나르면

.
.

아래와 같이 맨 마지막에 "laptop"항목이 추가된걸 볼 수 있다

💙

Equipment 데이터 수정하기


변경 전

변경 후

profile
on the move 👉🏼 https://sjeong82.tistory.com/

0개의 댓글