GraphQL + Node.js -Mutation編-
このセクションでも前回と同じようにsrc/index.jsに実装していきます。
まずはtypeDefsにMutation、addUserを追加します。
// src/index.js
const typeDefs = gql`
type Query {
hello: String!
users: [User!]!
user(id: Int!): User!
}
type Mutation {
addUser(id: ID!, name: String!): [User!]!
}
type User {
id: ID!
name: String!
posts: [Post!]
}
type Post {
id: ID!
title: String!
author_id: ID!
}`
こんな感じです。idとnameだけを持つユーザーを追加します。ここではめんどくさいのでPostの追加はしません。そして、新しくユーザーを作成した後に全てのユーザーを返すように書きます。
続いてresolverの実装
//src/index.js
const resolvers = {
Query: {
hello: () => 'Hello world!',
users: () => Users,
user: (_, { id }) => {
return Users.find((user) => user.id == id)
}
},
Mutation: {
addUser: (_, { id, name }) => {
const newUser = {
id,
name,
posts: []
}
Users.push(newUser)
return Users
}
}
}
新しくMutationを作りその中に先程定義した、addUserを書きます。argsにはidとnameを。JavascriptやNode.jsに慣れている人がほとんどだと思うのでこのコード自体は難しく感じないと思います。
さっそくPlaygroundで確かめてみましょう。
下のように新しいユーザー、Davisを追加し、全てのユーザーのnameを返すように書きます。
ここではデータベースを使っていないので一時的なデータですが、上のようにUsersに新しく追加されていると思います。
Mutationについての説明はここまでにします。UPDATE機能やDELETE機能は次回からのデータベースを使用するセクションで改めて学習します。
ここまでがでとりあえずGraphQL + Node.jsの簡単なチュートリアルです。次からはデータベースやORMについて学習していきます。