GraphQL ミューテーションを使用して AWS AppSync コンソールの DynamoDB テーブルにデータを追加する - AWS AppSync

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

GraphQL ミューテーションを使用して AWS AppSync コンソールの DynamoDB テーブルにデータを追加する

次のステップは、GraphQL ミューテーションを使用して空の DynamoDB テーブルにデータを追加することです。ミューテーションは GraphQL の基本的な操作タイプの 1 つです。これらはスキーマで定義され、データソース内のデータを操作できます。に関してRESTAPIs、これらは PUTや のようなオペレーションと非常に似ていますPOST

データソースにデータを追加するには
  1. まだサインインしていない場合は、 にサインイン AWS Management Console してAppSync コンソール を開きます。

  2. テーブルAPIから を選択します。

  3. 左側のタブで [クエリ] を選択します。

  4. 表の左側にある [エクスプローラー] タブには、クエリエディターですでに定義されているミューテーションやクエリがいくつか表示されている場合があります。

    Explorer tab showing a dropdown menu with mutation and query options like createTodo and deleteTodo.
    注記

    このミューテーションは、実際には Mutation タイプとしてスキーマに存在しています。これには次のようなコードがあります。

    type Mutation { createTodo(input: CreateTodoInput!): Todo updateTodo(input: UpdateTodoInput!): Todo deleteTodo(input: DeleteTodoInput!): Todo }

    ご覧のとおり、ここでの操作はクエリエディター内の操作と似ています。

    AWS AppSync は、前に定義したモデルからこれらを自動的に生成します。この例では、ミューcreateTodoテーションを使用して にエントリを追加します。TodoAPITable テーブル。

  5. createTodo ミューテーションの下で createTodo 操作を展開して選択します。

    Expanded createTodo mutation showing input fields like description, id, name, when, and where.

    上の図のように、すべてのフィールドのチェックボックスを有効にします。

    注記

    ここに表示される属性は、ミューテーションのさまざまな変更可能な要素です。input は、createTodo のパラメータと考えることができます。チェックボックス付きのさまざまなオプションは、操作が実行されるとレスポンスで返されるフィールドです。

  6. 画面中央のコードエディターで、操作が createTodo ミューテーションの下に表示されているのがわかります。

    mutation createTodo($createtodoinput: CreateTodoInput!) { createTodo(input: $createtodoinput) { where when name id description } }
    注記

    このスニペットを正しく説明するには、スキーマコードも確認する必要があります。宣言 mutation createTodo($createtodoinput: CreateTodoInput!){} は、その操作の 1 つによるミューテーションです。createTodoすべてのミューテーションはスキーマにあります。

    type Mutation { createTodo(input: CreateTodoInput!): Todo updateTodo(input: UpdateTodoInput!): Todo deleteTodo(input: DeleteTodoInput!): Todo }

    エディターからのミューテーション宣言に戻ると、パラメータは CreateTodoInput の必須の入力タイプで $createtodoinput というオブジェクトです。CreateTodoInput (およびミューテーション内のすべての入力) もスキーマで定義されていることに注意してください。例えば、CreateTodoInput のボイラープレートコードは以下のとおりです。

    input CreateTodoInput { name: String when: String where: String description: String }

    これには、モデルで定義したフィールド、namewhenwhere および descriptionが含まれています。

    エディタのコードに戻ると,createTodo(input: $createtodoinput) {} では入力を $createtodoinput として宣言します。これはミューテーション宣言でも使用されていました。これは、GraphQL が入力を指定された型と照合して検証し、正しい入力で使用されていることを確認できるためです。

    エディターコードの最後の部分には、操作の実行後にレスポンスで返されるフィールドが表示されます。

    { where when name id description }

    このエディターの下の [クエリ変数] タブには、以下のデータを含む汎用 createtodoinput オブジェクトが表示されます。

    { "createtodoinput": { "name": "Hello, world!", "when": "Hello, world!", "where": "Hello, world!", "description": "Hello, world!" } }
    注記

    ここで、前述の入力の値を割り当てます。

    input CreateTodoInput { name: String when: String where: String description: String }

    DynamoDB テーブルに入れたい情報を追加して createtodoinput を変更します。今回は、リマインダーとしていくつかの Todo 項目を作成したいと考えました。

    { "createtodoinput": { "name": "Shopping List", "when": "Friday", "where": "Home", "description": "I need to buy eggs" } }
  7. エディター上部の [実行] を選択します。ドロップダウンリストから createTodoを選択します。エディタの右側に、レスポンスが表示されます。次のように表示されます。

    { "data": { "createTodo": { "where": "Home", "when": "Friday", "name": "Shopping List", "id": "abcdefgh-1234-1234-1234-abcdefghijkl", "description": "I need to buy eggs" } } }

    DynamoDB サービスに移動すると、データソースに次の情報を含むエントリが表示されます。

    TodoAPITable interface showing a completed scan with 1 item returned in a table format.

操作を要約すると、GraphQL エンジンがレコードを解析し、リゾルバーがそのレコードを Amazon DynamoDB テーブルに挿入しました。これも DynamoDB コンソールで確認できます。id 値を渡す必要がないことに注意してください。id が生成され、結果に返されます。この例では、DynamoDB リソースに設定されているパーティションキーに対して、GraphQL リゾルバーの autoId() 関数を使用しているためです。リゾルバーを構築する方法については、別のセクションで説明します。戻り id 値を書き留めておきます。次のセクションでは、GraphQL クエリでデータを取得するときに使用します。