コロナ巣篭もりを良い機会にという訳でもないですが、ここひと月程 GraphQL について学習してました。が、書籍でもネット記事でもデータベースを含めた新規開発なストーリー(データストレージはたいてい NoSQL タイプ)が殆どで、「既存の RDB データベースの為に API サーバを立てる」という(少なくとも自分には)とても良くありそうなユースケースが無かったので、簡単な CRUD が出来るプログラムを書いてみました。これです↓。
既存 RDB は前回記事で紹介した world database を採用。動作までの手順は以下の通りです。
- world database をセットアップ(前回記事紹介の Docker イメージを使えば簡単)。
- cp ormconfig.json.sample ormconfig.json して、上記 DB の諸元を記入。
- npm install
- npm start
http://localhost:4000/graphql から Apollo Server ビルトインの PlayGround で API を試せます。こんな感じ↓です。
プログラミングの参考にしたのは下記の書籍とネット記事です。
初めてのGraphQL ―Webサービスを作って学ぶ新世代API
- 作者:Eve Porcello,Alex Banks
- 発売日: 2019/11/13
- メディア: 単行本(ソフトカバー)
既存 DB 用に TypeORM エンティティをガリガリ書くのはしんどいなぁと思ってたら typeorm-model-generator という便利なものがあったので、これで生成後に調整する、という手順がラクラクでした。
TypeORM は触り始めたばかりで未だよく分かっておらず、特に更新時のリレーションについては GraphQL なスキーマの枠組みの中でどのように実装したら良いのか未だ答えが出ていないので、現状では手つかずです。誰か良いやりかたをご存知でしたら教えて下さい。