[NODEJS]Graphql-Mutation実装
Mutation
Graphqlは、いくつかの情報を受信するときに、Mutationを使用してQueryを追加、変更、削除します.
データ消去
複数のワークステーションの追加
const typeDefs = gql`
type Query {
teams: [Team]
equipments: [Equipment]
supplies: [Supply]
team(id: Int): [Team]
}
// Query 밑에 새로운 Mutation을 추가해 주고 deleteEquipment라는 루트를 추가해준다.
// String 인자를 받는 id로 받고 Equipment를 반환해준다.
type Mutation {
deleteEquipment(id: String): Equipment
}
解析ワークステーションの追加Mutation: {
deleteEquipment: (parent,args,context,info) => {
//deleted 변수에 내가 검색한 id값과 database.equipments에 들어있는 id값과 동일하면
//해당 데이터를 반환
const deleted = database.equipments
.filter((equipment) => {
return args.id === equipment.id
})[0]
// filter를 통해서 내가 찾는id값과 다른 값들만 database.equipments에 새롭게 넣어준다.
database.equipments = database.equipments
.filter((equipment) => {
return equipment.id !== args.id
})
return deleted
}
}
最初に所有していたデータを要求します.
Rootがデータを削除したdeleteEquipmentをQueryではなくパラメータ値とした場合、削除したデータは返されます.
再度データの確認を依頼し、削除したデータが消えたことを確認できます.
データの追加
複数のワークステーションの追加
const typeDefs = gql`
type Query {
teams: [Team]
equipments: [Equipment]
supplies: [Supply]
team(id: Int): [Team]
}
type Mutation {
deleteEquipment(id: String): Equipment
// 데이터를 추가하기 때문에 추가할 Equipment의 요소들을 인자값으로 받고 Equipment를 반환해준다.
insertEquipment(
id: String,
used_by: String,
count: Int,
new_or_used: String
): Equipment
}
解析ワークステーションの追加// database.equipments 배열에 인자로 넘겨준 데이터를 push해준다. 그리고 추가해준 데이터를 반환해 준다.
Mutation: {
insertEquipment: (parent,args,context,info) => {
database.equipments.push(args)
return args
},
}
最初に所有していたデータを要求します.
各要素の値をパラメータとして送信します.
追加したデータが表示されているかどうかを確認するために、データの確認を再度要求します.
データの変更
複数のワークステーションの追加
const typeDefs = gql`
type Query {
teams: [Team]
equipments: [Equipment]
supplies: [Supply]
team(id: Int): [Team]
}
type Mutation {
deleteEquipment(id: String): Equipment
// 수정할 데이터를 Equipment의 요소들의 인자값으로 받고 Equipment를 반환해준다.
editEquipment(
id: String,
used_by: String,
count: Int,
new_or_used: String
): Equipment
}
解析ワークステーションの追加Mutation: {
editEquipment: (parent, args, context, info) =>{
return database.equipments.filter((equiment) => {
// equiment id값과 찾으려고 하는 인자값에 id와 같은 값을찾아서
return equiment.id === args.id
}).map((equipment) => {
// Object.assign을 이용해서 equipment와 args를 병합을 해준다.
Object.assign(equipment, args)
return equipment
})[0]
},
}
最初に所有していたデータを要求します.
各要素の値をパラメータとして送信します.
再度データ確認を依頼し、修正したデータが見えることを確認します.
Reference
この問題について([NODEJS]Graphql-Mutation実装), 我々は、より多くの情報をここで見つけました https://velog.io/@tmdwns1521/NODEJS-Graphql-Mutation-구현テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol