翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
GraphQL ミューテーションを使用して AWS AppSync コンソールの DynamoDB テーブルにデータを追加する
次のステップは、GraphQL ミューテーションを使用して空の DynamoDB テーブルにデータを追加することです。ミューテーションは GraphQL の基本的な操作タイプの 1 つです。これらはスキーマで定義され、データソース内のデータを操作できます。REST API に関しては、これらは PUT や POST などの操作と非常に似ています。
データソースにデータを追加するには
-
まだサインインしていない場合は、 にサインイン AWS Management Console して AppSync コンソール
を開きます。 -
テーブルから API を選択します。
-
左側のタブで [クエリ] を選択します。
-
表の左側にある [エクスプローラー] タブには、クエリエディターですでに定義されているミューテーションやクエリがいくつか表示されている場合があります。
注記
このミューテーションは、実際には
Mutationタイプとしてスキーマに存在しています。これには次のようなコードがあります。type Mutation { createTodo(input: CreateTodoInput!): Todo updateTodo(input: UpdateTodoInput!): Todo deleteTodo(input: DeleteTodoInput!): Todo }ご覧のとおり、ここでの操作はクエリエディター内の操作と似ています。
AWS AppSync は、前に定義したモデルからこれらを自動的に生成しました。この例では、
createTodoミューテーションを使用してTodoApitableテーブルにエントリを追加します。 -
createTodoミューテーションの下でcreateTodo操作を展開して選択します。
上の図のように、すべてのフィールドのチェックボックスを有効にします。
注記
ここに表示される属性は、ミューテーションのさまざまな変更可能な要素です。
inputは、createTodoのパラメータと考えることができます。チェックボックス付きのさまざまなオプションは、操作が実行されるとレスポンスで返されるフィールドです。 -
画面中央のコードエディターで、操作が
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 }これには、モデルで定義したフィールド、
name、when、whereおよび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" } } -
エディター上部の [実行] を選択します。ドロップダウンリストから [createTodo] を選択します。エディタの右側に、レスポンスが表示されます。次のように表示されます。
{ "data": { "createTodo": { "where": "Home", "when": "Friday", "name": "Shopping List", "id": "abcdefgh-1234-1234-1234-abcdefghijkl", "description": "I need to buy eggs" } } }DynamoDB サービスに移動すると、データソースに次の情報を含むエントリが表示されます。
操作を要約すると、GraphQL エンジンがレコードを解析し、リゾルバーがそのレコードを Amazon DynamoDB テーブルに挿入しました。これも DynamoDB コンソールで確認できます。id 値を渡す必要がないことに注意してください。id が生成され、結果に返されます。この例では、DynamoDB リソースに設定されているパーティションキーに対して、GraphQL リゾルバーの autoId() 関数を使用しているためです。リゾルバーを構築する方法については、別のセクションで説明します。戻り id 値を書き留めておきます。次のセクションでは、GraphQL クエリでデータを取得するときに使用します。