

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

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

L'objet de `BatchPutItem` requête vous permet de demander à la fonction AWS AppSync DynamoDB d'envoyer une `BatchWriteItem` demande à DynamoDB pour placer plusieurs éléments, éventuellement sur plusieurs tables. Pour cet objet de demande, vous devez spécifier les éléments suivants :
+ Les noms de tables dans lesquels placer les éléments
+ Les éléments complets à placer dans chaque table

Les limites `BatchWriteItem` DynamoDB s'appliquent et **aucune expression de condition** ne peut être fournie.

La structure de l'objet de `BatchPutItem` requête est la suivante :

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

Les champs sont définis comme suit :

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

### BatchPutItem liste des champs
<a name="js-BatchPutItem-list-col"></a>

** `operation` **  
L'opération DynamoDB à effectuer. Pour que vous puissiez effectuer l'opération DynamoDB `BatchPutItem`, ce champ doit être défini sur `BatchPutItem`. Cette valeur est obligatoire.

** `tables` **  
Les tables DynamoDB dans lesquelles placer les éléments. Chaque entrée de table représente une liste d'éléments DynamoDB à insérer pour cette table spécifique. Vous devez fournir au moins une table. Cette valeur est obligatoire.

Objets à mémoriser :
+ Les éléments entièrement insérés sont renvoyés dans la réponse, en cas de succès.
+ Si un élément n'a pas été inséré dans la table, un élément *null* s'affiche dans le bloc de données pour cette table.
+ Les éléments insérés sont triés par table, en fonction de l'ordre dans lequel ils ont été fournis dans l'objet de demande.
+ Chaque `Put` commande contenue dans a `BatchPutItem` est atomique, mais un lot peut être partiellement traité. Si un lot est traité partiellement en raison d'une erreur, les clés non traitées sont renvoyées dans le cadre du résultat de l'appel dans le bloc *unprocessedKeys*.
+  `BatchPutItem` est limité à 25 éléments.
+ Cette opération **n'est pas** prise en charge lorsqu'elle est utilisée avec la détection de conflits. L'utilisation des deux en même temps peut entraîner une erreur.

Pour l'exemple de gestionnaire de demandes de fonction suivant :

```
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 })],
    },
  };
}
```

Le résultat de l'appel disponible dans `ctx.result` est le suivant :

```
{
   "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": []
   }
}
```

`ctx.error` contient des détails sur l'erreur. La présence **des données** clés, **UnprocessedItems** et de chaque clé de table fournie dans l'objet de demande est garantie dans le résultat de l'appel. Les éléments ayant été insérés sont dans le bloc de **données**. Les éléments qui n'ont pas été traités sont marqués comme *null* dans le bloc de données et sont placés dans le bloc **unprocessedItems**.