本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
使用 GraphQL 變動將資料新增至 AWS AppSync 主控台中的 DynamoDB 資料表
您的下一個步驟是使用 GraphQL 變動將資料新增至空白 DynamoDB 資料表。變動是 GraphQL 中的基本操作類型之一。它們在結構描述中定義,可讓您操作資料來源中的資料。就 REST APIs而言,這些與 PUT或 等操作非常類似POST。
將資料新增至資料來源
-
如果您尚未這麼做,請登入 AWS Management Console 並開啟 AppSync 主控台
。 -
從資料表中選擇您的 API。
-
在左側的索引標籤中,選擇查詢。
-
在資料表左側的 Explorer 索引標籤中,您可能會看到查詢編輯器中已定義的數個變動和查詢:
注意
此變動實際上位於您的結構描述中做為
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!){}是具有其其中一個操作的變動,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、where、when和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產生並傳回 。這是因為範例在 GraphQL 解析程式中使用 autoId()函數,用於 DynamoDB 資源上設定的分割區索引鍵。我們將介紹如何在不同的區段中建置解析程式。請記下傳回id的值;您將在下一節中使用它來擷取具有 GraphQL 查詢的資料。