本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
使用 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 解析器中,針對 DynamoDB 資源上設定的分割區金鑰使用autoId()
函數。我們將介紹如何在不同的區段中建置解析程式。記下傳回id
的值;您將在下一節中使用它來擷取具有 GraphQL 查詢的資料。