

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

# Sincronização
<a name="aws-appsync-resolver-mapping-template-reference-dynamodb-sync"></a>

O documento de mapeamento de solicitação `Sync` permite recuperar todos os resultados de uma tabela do DynamoDB e, depois, receber apenas os dados alterados desde a última consulta (as atualizações delta). As solicitações `Sync` só podem ser feitas para fontes de dados versionadas do DynamoDB. É possível especificar o seguinte:
+ Um filtro para excluir os resultados
+ Quantos itens retornar
+ Token de paginação
+ Quando sua última operação de `Sync` foi iniciada

O documento de mapeamento `Sync` possui a seguinte estrutura:

```
{
    "version" : "2018-05-29",
    "operation" : "Sync",
    "basePartitionKey": "Base Tables PartitionKey",
    "deltaIndexName": "delta-index-name",
    "limit" : 10,
    "nextToken" : "aPaginationToken",
    "lastSync" :  1550000000000,
    "filter" : {
        ...
    }
}
```

Os campos são definidos da seguinte forma:

## Campos de sincronização
<a name="sync-list"></a>

### Lista de campos de sincronização
<a name="sync-list-col"></a>

** `version` **  
A versão de definição do modelo. No momento, somente `2018-05-29` é compatível. Este valor é obrigatório.

** `operation` **  
A operação do DynamoDB para execução. Para executar a operação do `Sync` do , isso deve ser definido para `Sync`. Este valor é obrigatório.

** `filter` **  
Um filtro que pode ser usado para filtrar os resultados do DynamoDB antes que sejam retornados. Para obter mais informações sobre os filtros, consulte [Filtros](aws-appsync-resolver-mapping-template-reference-dynamodb-filter.md). Esse campo é opcional.

** `limit` **  
O número máximo de itens a serem avaliados ao mesmo tempo. Esse campo é opcional. Se omitido, o limite padrão será definido como `100` itens. O valor máximo para esse campo é de `1000` itens.

** `nextToken` **  
O token de paginação para continuar uma consulta anterior. Isso seria obtido de uma consulta anterior. Esse campo é opcional.

** `lastSync` **  
O momento, em milésimos de segundos de epoch, no qual a última operação de `Sync` bem-sucedida foi iniciada. Se especificado, somente os itens que foram alterados após `lastSync` serão retornados. Este campo é opcional e deve ser preenchido somente depois de recuperar todas as páginas de uma operação inicial de `Sync`. Se omitido, os resultados da tabela *Base* serão retornados, caso contrário, os resultados da tabela *Delta* serão retornados.

**`basePartitionKey`**  
A chave de partição da tabela *Base* usada ao realizar uma operação `Sync`. Esse campo permite que uma operação `Sync` seja executada quando a tabela utiliza uma chave de partição personalizada. Esse é um campo opcional.

**`deltaIndexName`**  
O índice usado para a operação `Sync`. Esse índice é necessário para habilitar uma operação `Sync` em toda a tabela de armazenamento delta quando a tabela usa uma chave de partição personalizada. A operação `Sync` será executada no GSI (criado em `gsi_ds_pk` e `gsi_ds_sk`). Esse campo é opcional.

Os resultados retornados pela sincronização do DynamoDB são automaticamente convertidos nos tipos primitivos GraphQL e JSON e estão disponíveis no contexto de mapeamento (`$context.result`).

Para obter mais informações sobre a conversão de tipo do DynamoDB, consulte [Sistema de tipo (mapeamento da resposta)](aws-appsync-resolver-mapping-template-reference-dynamodb-typed-values-responses.md).

Para obter mais informações sobre os modelos de mapeamento da resposta, consulte [Visão geral do modelo de mapeamento do resolvedor](resolver-mapping-template-reference-overview.md#aws-appsync-resolver-mapping-template-reference-overview).

Os resultados possuem a seguinte estrutura:

```
{
    items = [ ... ],
    nextToken = "a pagination token",
    scannedCount = 10,
    startedAt = 1550000000000
}
```

Os campos são definidos da seguinte forma:

** `items` **  
Uma lista que contém os itens retornados pela sincronização.

** `nextToken` **  
Se houver mais resultados, `nextToken` contém um token de paginação que você pode usar em outra solicitação. AWS AppSync criptografa e ofusca o token de paginação retornado do DynamoDB. Isso impede que os dados da sua tabela sejam divulgados inadvertidamente para o chamador. Além disso, esses tokens de paginação não podem ser usados em diferentes resolvedores.

** `scannedCount` **  
O número de itens recuperados pelo DynamoDB antes da aplicação de uma expressão de filtro (se houver).

** `startedAt` **  
O momento, em milésimos de segundos de epoch, no qual a operação de sincronização foi iniciada e você pode armazenar localmente e usar em outra solicitação como seu argumento `lastSync`. Se um token de paginação foi incluído na solicitação, esse valor será o mesmo que o retornado pela solicitação para a primeira página de resultados.

## Exemplo
<a name="id14"></a>

Veja a seguir um modelo de mapeamento para uma consulta `syncPosts(nextToken: String, lastSync: AWSTimestamp)` do GraphQL.

Neste exemplo, se `lastSync` for omitido, todas as entradas na tabela base serão retornadas. Se `lastSync` for fornecido, somente as entradas na tabela de sincronização delta que foram alteradas desde `lastSync` serão retornadas.

```
{
    "version" : "2018-05-29",
    "operation" : "Sync",
    "limit": 100,
    "nextToken": $util.toJson($util.defaultIfNull($ctx.args.nextToken, null)),
    "lastSync": $util.toJson($util.defaultIfNull($ctx.args.lastSync, null))
}
```