Ito🐷Amplify&GraphQLでデータを取得するときにソートするために2021/01/31に公開・約3,100字ツイートGraphQLAmplifytechはじめに色々なチュートリアル系のハンズオンを実装する中でソートについてあまり触れられておらず、どうやって実装するんだろうと疑問になったのでまとめてみました。!Amplifyの勉強がてら投稿してみた記事になりますので、至らぬ点等どしどし突っ込みを入れていただければと思います。!この記事を参考にされる場合は初心者のまとめであることを念頭に、慎重に調査をして実装していただければと思います。想定シチュエーションサービスにアイコン等のファイルを登録することを想像しています。initあたりが終わったところから先の話になります。pushするreactのアプリケーション実装テストschema.graphqlの書き換え私のamplifyの導入の仕方ではプロジェクトディレクトリ/amplify/backend/api/[pj名]/schema.graphqlにファイルがあります。pushするとDynammoDBにはこんなテーブルができます。id(文字列)がパーティションキー、-がソートキーとなっています。この時出来上がるクエリはこの二つ。idを指定して値を得るか、すべてのデータをソートせずに(おそらく実際にはidに関連したある順番になる、という理解)もってくるか、になります。listPostsの結果をソートしたかったのですが、受信後の世界でやる以外の方法がわからず一旦断念。SECRET}こんなスキーマに変更。postTypeを追加して、セカンダリインデックスを使うことによって、プライマリキーはIDのままになるため、id指定のgetPostと、postTypeを使ってcreatedAtでソートをしたデータを取得するという二つの機能をもたせることができるようになる、と理解しています。(SECRETなやつ取得出来たらあかんやろというツッコミはぐっとこらえてください、ぱっと思いついたのがこれだったもので・・・)確かに新しいインデックスができているように見えます。}}実際にこんなクエリを書くとpostTypeがOPENなものをcreatedAtでソートして持ってくることができました。pushこのスキーマ変更の場合はエラーが起こらないと思います。プライマリキーを書き換えるような変更をしている場合はエラーになります。pushとすると、dynamoDBのテーブルを一回削除して新しくつくり直す、という形で更新ができるようです。mockで手元で色々実験するのが楽な気がしています。https://docs.amplify.aws/cli/usage/mock#api-mocking-setupフロントエンド(今回はreact)からqueryを発行するhttps://docs.amplify.aws/lib/graphqlapi/query-data/q/platform/js#query-declarationsこちらを参考に。};こんな感じのコードでソート済みの結果が得られました。今後調べたいことなど今回の実装方法以外に調べていると@searchableを使う方法というのがあるようなのでまた調べたいと思います。目的に対して今回の実装がリーズナブルなのかもDynamoDBの特性がつかめていないため、今後使ってみながら理解を深めていきたいと思います。Itowebの世界に入門してきた波紋戦士です。回路設計とかFPGA(組み込み系)が本業でした。バッジを贈って著者を応援しようバッジを受け取った著者にはZennから現金やAmazonギフト券が還元されます。Itowebの世界に入門してきた波紋戦士です。回路設計とかFPGA(組み込み系)が本業でした。pushフロントエンド(今回はreact)からqueryを発行する今後調べたいことなどZennエンジニアのための情報共有コミュニティAboutZennについて運営会社お知らせ・リリースGuides使い方Publicationよくある質問LinksTwitterGitHubメディアキットLegal利用規約プライバシーポリシ。