

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.

# PutItem
<a name="js-aws-appsync-resolver-reference-dynamodb-putitem"></a>

Le document de mappage des demandes vous permet de `PutItem` demander à la fonction AWS AppSync DynamoDB d'envoyer `PutItem` une demande à DynamoDB et de spécifier les éléments suivants :
+ La clé de l'élément dans DynamoDB
+ Contenu complet de l'élément (composé de `key` et de `attributeValues`)
+ Conditions de réussite de l'opération

La structure de la `PutItem` demande est la suivante :

```
type DynamoDBPutItemRequest = {
  operation: 'PutItem';
  key: { [key: string]: any };
  attributeValues: { [key: string]: any};
  condition?: ConditionCheckExpression;
  customPartitionKey?: string;
  populateIndexFields?: boolean;
  _version?: number;
};
```

Les champs sont définis comme suit :

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

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

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

 **`key`**   
La clé de l'élément dans DynamoDB. Les éléments DynamoDB peuvent avoir une seule clé de hachage ou une clé de hachage et une clé de tri, selon la structure de la table. Pour plus d'informations sur la façon de spécifier une « valeur saisie », voir [Système de types (mappage des demandes).](https://docs.aws.amazon.com/appsync/latest/devguide/js-resolver-reference-dynamodb.html#js-aws-appsync-resolver-reference-dynamodb-typed-values-request) Cette valeur est obligatoire.

 **`attributeValues`**   
Le reste des attributs de l'élément doit être placé dans DynamoDB. Pour plus d'informations sur la façon de spécifier une « valeur saisie », voir [Système de types (mappage des demandes).](https://docs.aws.amazon.com/appsync/latest/devguide/js-resolver-reference-dynamodb.html#js-aws-appsync-resolver-reference-dynamodb-typed-values-request) Ce champ est facultatif.

 **`condition`**   
Condition permettant de déterminer si la demande doit réussir ou non, en fonction de l'état de l'objet déjà dans DynamoDB. Si aucune condition n'est spécifiée, la requête `PutItem` remplace toute entrée existante pour cet élément. Pour plus d'informations sur les conditions, consultez la section [Expressions de condition](https://docs.aws.amazon.com/appsync/latest/devguide/js-resolver-reference-dynamodb.html#js-aws-appsync-resolver-reference-dynamodb-condition-expressions). Cette valeur est facultative.

 **`_version`**   
Valeur numérique représentant la dernière version connue d'un élément. Cette valeur est facultative. Ce champ est utilisé pour la *détection de conflits* et n'est pris en charge que sur les sources de données versionnées.

**`customPartitionKey`**  
Lorsqu'elle est activée, cette valeur de chaîne modifie le format des `ds_pk` enregistrements `ds_sk` et utilisés par la table de synchronisation delta lorsque le contrôle des versions a été activé (pour plus d'informations, voir [Détection des conflits et synchronisation](https://docs.aws.amazon.com/appsync/latest/devguide/conflict-detection-and-sync.html) dans le *guide du AWS AppSync développeur*). Lorsque cette option est activée, le traitement de l'`populateIndexFields`entrée est également activé. Ce champ est facultatif.

**`populateIndexFields`**  
Valeur booléenne qui, lorsqu'elle est activée en **même temps que le `customPartitionKey`**, crée de nouvelles entrées pour chaque enregistrement de la table de synchronisation delta, en particulier dans les colonnes `gsi_ds_pk` et`gsi_ds_sk`. Pour plus d'informations, consultez la section [Détection et synchronisation des conflits](https://docs.aws.amazon.com/appsync/latest/devguide/conflict-detection-and-sync.html) dans le *manuel du AWS AppSync développeur*. Ce champ est facultatif.   
L'élément écrit dans DynamoDB est automatiquement converti en types primitifs GraphQL et JSON et est disponible dans le résultat du contexte (). `context.result`

L'élément écrit dans DynamoDB est automatiquement converti en types primitifs GraphQL et JSON et est disponible dans le résultat du contexte (). `context.result`

Pour plus d'informations sur la conversion de type DynamoDB, [voir Système de types (](https://docs.aws.amazon.com/appsync/latest/devguide/js-resolver-reference-dynamodb.html#js-aws-appsync-resolver-reference-dynamodb-typed-values-responses)mappage des réponses).

Pour plus d'informations sur les JavaScript résolveurs, consultez la section Présentation des [JavaScriptrésolveurs.](https://docs.aws.amazon.com/appsync/latest/devguide/resolver-reference-overview-js.html)

## Exemple 1
<a name="js-example-1"></a>

L'exemple suivant est un gestionnaire de demande de fonction pour une mutation `updateThing(foo: String!, bar: String!, name: String!, version: Int!)` GraphQL.

S'il n'existe aucun élément avec la clé spécifiée, il est créé. S'il existe déjà un élément avec la clé spécifiée, il est remplacé.

```
import { util } from '@aws-appsync/utils';
export function request(ctx) {
  const { foo, bar, ...values} = ctx.args
  return {
    operation: 'PutItem',
    key: util.dynamodb.toMapValues({foo, bar}),
    attributeValues: util.dynamodb.toMapValues(values),
  };
}
```

## Exemple 2
<a name="js-example-2"></a>

L'exemple suivant est un gestionnaire de demande de fonction pour une mutation `updateThing(foo: String!, bar: String!, name: String!, expectedVersion: Int!)` GraphQL.

Cet exemple vérifie que le champ de l'élément actuellement dans DynamoDB est `version` défini sur. `expectedVersion`

```
import { util } from '@aws-appsync/utils';
export function request(ctx) {
  const { foo, bar, name, expectedVersion } = ctx.args;
  const values = { name, version: expectedVersion + 1 };
  let condition = util.transform.toDynamoDBConditionExpression({
    version: { eq: expectedVersion },
  });

  return {
    operation: 'PutItem',
    key: util.dynamodb.toMapValues({ foo, bar }),
    attributeValues: util.dynamodb.toMapValues(values),
    condition,
  };
}
```

Pour de plus amples informations sur l'API de DynamoDB `PutItem`, veuillez consulter la [Documentation sur les API de DynamoDB](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_PutItem.html).