

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à.

# BatchPutItem
<a name="js-aws-appsync-resolver-reference-dynamodb-batch-put-item"></a>

L'oggetto `BatchPutItem` request consente di indicare alla funzione AWS AppSync DynamoDB di effettuare una `BatchWriteItem` richiesta a DynamoDB per inserire più elementi, potenzialmente su più tabelle. Per questo oggetto di richiesta, è necessario specificare quanto segue:
+ I nomi delle tabelle in cui inserire le voci
+ Le voci complete da inserire in ciascuna tabella

Si applicano i limiti `BatchWriteItem` di DynamoDB e non si può inserire **alcuna espressione di condizione**.

L'oggetto della `BatchPutItem` richiesta ha la seguente struttura:

```
type DynamoDBBatchPutItemRequest = {
  operation: 'BatchPutItem';
  tables: {
    [tableName: string]: { [key: string]: any}[];
  };
};
```

I campi sono definiti come segue:

## BatchPutItem campi
<a name="js-BatchPutItem-list"></a>

### BatchPutItem elenco dei campi
<a name="js-BatchPutItem-list-col"></a>

** `operation` **  
L'operazione DynamoDB da eseguire. Per eseguire l'operazione `BatchPutItem` DynamoDB, il valore deve essere impostato su `BatchPutItem`. Questo valore è obbligatorio.

** `tables` **  
Le tabelle DynamoDB in cui inserire gli elementi. Ogni voce della tabella rappresenta un elenco di elementi DynamoDB da inserire per questa tabella specifica. Occorre specificare almeno una tabella. Questo valore è obbligatorio.

Aspetti da ricordare:
+ Se l'operazione va a buon fine, nella risposta vengono restituite le voci inserite completamente.
+ Se una voce non è stata inserita nella tabella, un elemento *null* viene visualizzato nel blocco di dati relativo a quella tabella.
+ Gli elementi inseriti vengono ordinati per tabella, in base all'ordine in cui sono stati forniti all'interno dell'oggetto della richiesta.
+ Ogni `Put` comando all'interno di a `BatchPutItem` è atomico, tuttavia un batch può essere parzialmente elaborato. Se un batch viene elaborato parzialmente a causa di un errore, le chiavi non elaborate vengono restituite nell'ambito del risultato dell'invocazione all'interno del blocco *unprocessedKeys*.
+  `BatchPutItem` ha un limite di 25 voci.
+ Questa operazione **non è** supportata se utilizzata con il rilevamento dei conflitti. L'utilizzo di entrambi allo stesso tempo può causare un errore.

Per il seguente esempio di gestore di richieste di funzioni:

```
import { util } from '@aws-appsync/utils';

export function request(ctx) {
  const { authorId, postId, name, title } = ctx.args;
  return {
    operation: 'BatchPutItem',
    tables: {
      authors: [util.dynamodb.toMapValues({ authorId, name })],
      posts: [util.dynamodb.toMapValues({ authorId, postId, title })],
    },
  };
}
```

Il risultato dell'invocazione disponibile in `ctx.result` è il seguente:

```
{
   "data": {
     "authors": [
         null
     ],
     "posts": [
        // Was inserted
        {
          "authorId": "a1",
          "postId": "p2",
          "title": "title"
        }
     ]
   },
   "unprocessedItems": {
     "authors": [
        // This item was not processed due to an error
        {
          "authorId": "a1",
          "name": "a1_name"
        }
      ],
     "posts": []
   }
}
```

Il messaggio `ctx.error` contiene dettagli relativi all'errore. È garantito che **i dati** delle chiavi, **UnprocessedItems** e ogni chiave di tabella fornita nell'oggetto di richiesta siano presenti nel risultato della chiamata. Le voci inserite si trovano nel blocco di **dati**. Le voci non elaborate vengono contrassegnate come *null* all'interno del blocco dati e vengono inserite nel blocco **unprocessedItems**.