

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

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

O documento de mapeamento de solicitações permite que você `PutItem` solicite à função do AWS AppSync DynamoDB que faça uma `PutItem` solicitação ao DynamoDB e especifique o seguinte:
+ A chave do item no DynamoDB
+ O conteúdo completo do item (composto por `key` e `attributeValues`)
+ Condições para que a operação seja bem-sucedida

A solicitação `PutItem` tem a seguinte estrutura:

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

Os campos são definidos da seguinte forma:

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

### PutItem lista de campos
<a name="js-putitem-list-col"></a>

 **`operation`**   
A operação do DynamoDB para execução. Para executar a operação `PutItem` do DynamoDB, ela deve ser definida como `PutItem`. Este valor é obrigatório.

 **`key`**   
A chave do item no DynamoDB. Os itens do DynamoDB podem ter uma única chave de hash ou uma chave de hash e uma chave de classificação, dependendo da estrutura da tabela. Para obter mais informações sobre como especificar um "valor digitado", consulte [Sistema de tipo (Mapeamento de solicitação)](https://docs.aws.amazon.com/appsync/latest/devguide/js-resolver-reference-dynamodb.html#js-aws-appsync-resolver-reference-dynamodb-typed-values-request). Este valor é obrigatório.

 **`attributeValues`**   
O restante dos atributos do item a ser colocado no DynamoDB. Para obter mais informações sobre como especificar um "valor digitado", consulte [Sistema de tipo (Mapeamento de solicitação)](https://docs.aws.amazon.com/appsync/latest/devguide/js-resolver-reference-dynamodb.html#js-aws-appsync-resolver-reference-dynamodb-typed-values-request). Esse campo é opcional.

 **`condition`**   
Uma condição para determinar se a solicitação deve ser bem-sucedida ou não, com base no estado do objeto que já está no DynamoDB. Se nenhuma condição for especificada, uma solicitação `PutItem` substitui qualquer entrada existente para esse item. Para obter mais informações sobre as condições, consulte [Expressões de condição](https://docs.aws.amazon.com/appsync/latest/devguide/js-resolver-reference-dynamodb.html#js-aws-appsync-resolver-reference-dynamodb-condition-expressions). Este valor é opcional.

 **`_version`**   
Um valor numérico que representa a versão conhecida mais recente de um item. Este valor é opcional. Esse campo é usado para *Detecção de conflitos* e só é compatível com fontes de dados versionadas.

**`customPartitionKey`**  
Quando ativado, esse valor de string modifica o formato dos `ds_pk` registros `ds_sk` e usados pela tabela de sincronização delta quando o controle de versão é ativado (para obter mais informações, consulte [Detecção e sincronização de conflitos no Guia](https://docs.aws.amazon.com/appsync/latest/devguide/conflict-detection-and-sync.html) do *AWS AppSync desenvolvedor*). Quando ativado, o processamento da entrada `populateIndexFields` também é ativado. Esse campo é opcional.

**`populateIndexFields`**  
Um valor booleano que, quando ativado **com `customPartitionKey`**, cria novas entradas para cada registro na tabela de sincronização delta, especificamente nas colunas `gsi_ds_pk` e `gsi_ds_sk`. Para obter mais informações, consulte [Detecção e sincronização de conflitos](https://docs.aws.amazon.com/appsync/latest/devguide/conflict-detection-and-sync.html) no *Guia do desenvolvedor do AWS AppSync *. Esse campo é opcional.   
O item gravado no DynamoDB é automaticamente convertido nos tipos primitivos GraphQL e JSON e está disponível no resultado do contexto (`context.result`).

O item gravado no DynamoDB é automaticamente convertido nos tipos primitivos GraphQL e JSON e está disponível no resultado do contexto (`context.result`).

Para obter mais informações sobre a conversão de tipo do DynamoDB, consulte [Sistema de tipo (mapeamento da resposta)](https://docs.aws.amazon.com/appsync/latest/devguide/js-resolver-reference-dynamodb.html#js-aws-appsync-resolver-reference-dynamodb-typed-values-responses).

Para obter mais informações sobre JavaScript resolvedores, consulte a visão geral dos [JavaScriptresolvedores](https://docs.aws.amazon.com/appsync/latest/devguide/resolver-reference-overview-js.html).

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

O exemplo a seguir é um manipulador de solicitação de função para uma mutação GraphQL `updateThing(foo: String!, bar: String!, name: String!, version: Int!)`:

Se nenhum item com a chave especificada existir, ele será criado. Se já existir um item com a chave especificada, ele será substituído.

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

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

O exemplo a seguir é um manipulador de solicitação de função para uma mutação GraphQL `updateThing(foo: String!, bar: String!, name: String!, expectedVersion: Int!)`:

Esse exemplo verifica se o item que está atualmente no DynamoDB tem o campo `version` definido como `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,
  };
}
```

Para obter mais informações sobre a API `PutItem` do DynamoDB, consulte a [Documentação da API do DynamoDB](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_PutItem.html).