使用 GraphQL 突變將資料新增至 AWS AppSync 主控台中的 DynamoDB 資料表 - AWS AppSync

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

使用 GraphQL 突變將資料新增至 AWS AppSync 主控台中的 DynamoDB 資料表

下一步是使用 GraphQL 突變將資料新增至空白 DynamoDB 資料表。突變是 GraphQL 中的基本操作類型之一。它們在結構描述中定義,可讓您操作資料來源中的資料。就 REST 而言APIs,這些操作與 PUT或 等操作非常類似POST

將資料新增至資料來源
  1. 如果您尚未這麼做,請登入 AWS Management Console 並開啟AppSync 主控台

  2. API 從資料表中選擇您的 。

  3. 在左側的索引標籤中,選擇查詢

  4. 在資料表左側的 Explorer 索引標籤中,您可能會看到已在查詢編輯器中定義的數個突變和查詢:

    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!){}是具有其其中一個操作 的突變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 }

    它包含我們在模型中定義的欄位,即 namewherewhendescription

    返回編輯器程式碼,在 中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產生並傳回 。這是因為範例在 GraphQL 解析器中,針對 DynamoDB 資源上設定的分割區金鑰使用autoId()函數。我們將介紹如何在不同的區段中建置解析程式。記下傳回id的值;您將在下一節中使用它來擷取具有 GraphQL 查詢的資料。