スマレジエンジニアyushiのブログ

スマレジエンジニアのブログ

【GraphQL入門 #3】Query・Mutationの自作

引き続きGraphQLに入門しています。

yushi-dev.hatenablog.com

前回は公式チュートリアルを元に実装しましたが、今回は自作してみます。
Mutationも作成します。

nodemonの追加

先に、nodemonを追加します。

nodemonとは、ソースコードの更新を起動中のサーバに自動反映するライブラリです。

www.npmjs.com

書籍一覧取得Queryのタイトル絞り込み

Query定義にtitleの引数を追加します。

type Query {
-  books: [Book]
+  books(title: String): [Book]
}

次に、resolverに絞り込み機能を追加します。

books: (parent, args) => {
  let res = books

  if (args.title) {
    res = res.filter(({ title }) => title.includes(args.title))
  }

  return res
},

動作確認してみます。

書籍新規追加Mutationの追加

Mutationを定義します。

type Mutation {
  addBook(title: String!, author: String!): Book
}

リクエストでは、タイトルと書籍を指定します。

次にresolverを追加します。

let idAutoIncrement = 3;

...

addBook: (parent, args) => {
  const book = {
    id: idAutoIncrement++,
    title: args.title,
    author: args.author,
  };

  books.push(book);

  return book;
}

追加してみます。

再度取得してみると、実際に取得できることが確認できます。

Pull Request

https://github.com/nek0meshi/graphql-learn/pull/4