

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

# Utilizzo delle mutazioni GraphQL per aggiungere dati a una tabella DynamoDB nella console AWS AppSync
<a name="add-data-with-graphql-mutation"></a>

Il passaggio successivo consiste nell'aggiungere dati alla tabella DynamoDB vuota utilizzando una mutazione GraphQL. Le mutazioni sono uno dei tipi di operazioni fondamentali in GraphQL. Sono definite nello schema e consentono di manipolare i dati nella fonte dei dati. In termini di REST APIs, sono molto simili a operazioni come `PUT` o`POST`.

**Per aggiungere dati alla tua fonte di dati**

1. Se non l'hai già fatto, accedi Console di gestione AWS e apri la [AppSync console](https://console.aws.amazon.com/appsync/). 

1. Scegli la tua API dalla tabella.

1. Nella scheda a sinistra, scegli **Query**.

1. Nella scheda **Explorer** a sinistra della tabella, potresti vedere diverse mutazioni e query già definite nell'editor di query:  
![\[Explorer tab showing a dropdown menu with mutation and query options like createTodo and deleteTodo.\]](http://docs.aws.amazon.com/it_it/appsync/latest/devguide/images/explorer-example-1.png)
**Nota**  
Questa mutazione è effettivamente presente nel tuo schema come tipo. `Mutation` Ha il codice:  

   ```
   type Mutation {
   	createTodo(input: CreateTodoInput!): Todo
   	updateTodo(input: UpdateTodoInput!): Todo
   	deleteTodo(input: DeleteTodoInput!): Todo
   }
   ```
Come puoi vedere, le operazioni qui sono simili a quelle presenti nell'editor di query.

   AWS AppSync li ha generati automaticamente dal modello che abbiamo definito in precedenza. Questo esempio utilizzerà la `createTodo` mutazione per aggiungere voci alla nostra *TodoAPITable* tabella.

1. Scegli l'`createTodo`operazione espandendola sotto la `createTodo` mutazione:  
![\[Expanded createTodo mutation showing input fields like description, id, name, when, and where.\]](http://docs.aws.amazon.com/it_it/appsync/latest/devguide/images/explorer-example-2.png)

   Abilita le caselle di controllo per tutti i campi, come nell'immagine sopra.
**Nota**  
Gli attributi che vedete qui sono i diversi elementi modificabili della mutazione. Il tuo `input` può essere considerato il parametro di. `createTodo` Le varie opzioni con caselle di controllo sono i campi che verranno restituiti nella risposta una volta eseguita un'operazione.

1. Nell'editor di codice al centro dello schermo, noterai che l'operazione appare sotto la mutazione: `createTodo`

   ```
   mutation createTodo($createtodoinput: CreateTodoInput!) {
     createTodo(input: $createtodoinput) {
       where
       when
       name
       id
       description
     }
   }
   ```
**Nota**  
Per spiegare correttamente questo frammento, dobbiamo anche guardare il codice dello schema. La dichiarazione `mutation createTodo($createtodoinput: CreateTodoInput!){}` è la mutazione con una delle sue operazioni,. `createTodo` La mutazione completa si trova nello schema:  

   ```
   type Mutation {
   	createTodo(input: CreateTodoInput!): Todo
   	updateTodo(input: UpdateTodoInput!): Todo
   	deleteTodo(input: DeleteTodoInput!): Todo
   }
   ```
Tornando alla dichiarazione di mutazione dell'editor, il parametro è un oggetto chiamato `$createtodoinput` con un tipo di input richiesto di. `CreateTodoInput` Nota che `CreateTodoInput` (e tutti gli input della mutazione) sono definiti anche nello schema. Ad esempio, ecco il codice boilerplate per: `CreateTodoInput`  

   ```
   input CreateTodoInput {
   	name: String
   	when: String
   	where: String
   	description: String
   }
   ```
Contiene i campi che abbiamo definito nel nostro modello, vale a dire, `name``when`, `where` e. `description`  
Tornando al codice dell'editor, in`createTodo(input: $createtodoinput) {}`, dichiariamo l'input come`$createtodoinput`, che è stato utilizzato anche nella dichiarazione di mutazione. Lo facciamo perché ciò consente a GraphQL di convalidare i nostri input rispetto ai tipi forniti e di garantire che vengano utilizzati con gli input corretti.  
La parte finale del codice dell'editor mostra i campi che verranno restituiti nella risposta dopo l'esecuzione di un'operazione:  

   ```
   {
       where
       when
       name
       id
       description
     }
   ```

   Nella scheda **Variabili di interrogazione** sotto questo editor, ci sarà un `createtodoinput` oggetto generico che può contenere i seguenti dati:

   ```
   {
     "createtodoinput": {
       "name": "Hello, world!",
       "when": "Hello, world!",
       "where": "Hello, world!",
       "description": "Hello, world!"
     }
   }
   ```
**Nota**  
Qui è dove assegniamo i valori per l'input menzionato in precedenza:  

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

   Modifica il `createtodoinput` aggiungendo le informazioni che vogliamo inserire nella nostra tabella DynamoDB. In questo caso, volevamo creare alcuni `Todo` elementi come promemoria:

   ```
   {
     "createtodoinput": {
       "name": "Shopping List",
       "when": "Friday",
       "where": "Home",
       "description": "I need to buy eggs"
     }
   }
   ```

1. Scegli **Esegui** nella parte superiore dell'editor. Scegli **CreateToDo** nell'elenco a discesa. Sul lato destro dell'editor, dovresti vedere la risposta. Potrebbe essere simile a quanto segue:

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

   Se accedi al servizio DynamoDB, ora vedrai una voce nella tua origine dati con queste informazioni:  
![\[TodoAPITable interface showing a completed scan with 1 item returned in a table format.\]](http://docs.aws.amazon.com/it_it/appsync/latest/devguide/images/explorer-example-3.png)

Per riassumere l'operazione, il motore GraphQL ha analizzato il record e un resolver lo ha inserito nella tabella Amazon DynamoDB. Ancora una volta, puoi verificarlo nella console DynamoDB. Nota che non è necessario inserire un `id` valore. An `id` viene generato e restituito nei risultati. Questo perché l'esempio ha utilizzato una `autoId()` funzione in un resolver GraphQL per la chiave di partizione impostata sulle risorse DynamoDB. Tratteremo come creare resolver in una sezione diversa. Prendi nota del `id` valore restituito; lo utilizzerai nella sezione successiva per recuperare i dati con una query GraphQL.