

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="js-aws-appsync-resolver-reference-dynamodb-sync"></a>

O objeto 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 objeto de solicitação `Sync` tem a seguinte estrutura:

```
type DynamoDBSyncRequest = {
  operation: 'Sync';
  basePartitionKey?: string;
  deltaIndexName?: string;
  limit?: number;
  nextToken?: string;
  lastSync?: number;
  filter?: {
    expression: string;
    expressionNames?: { [key: string]: string };
    expressionValues?: { [key: string]: any };
  };
};
```

Os campos são definidos da seguinte forma:

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

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

** `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](https://docs.aws.amazon.com/appsync/latest/devguide/js-resolver-reference-dynamodb.html#js-aws-appsync-resolver-reference-dynamodb-filter). 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 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 [JavaScript resolvedores](https://docs.aws.amazon.com/appsync/latest/devguide/resolver-reference-overview-js.html).

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 funções ou 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="js-id14"></a>

O exemplo a seguir é um manipulador de solicitação de função para uma consulta `syncPosts(nextToken: String, lastSync: AWSTimestamp)` 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.

```
export function request(ctx) {
  const { nextToken, lastSync } = ctx.args;
  return { operation: 'Sync', limit: 100, nextToken, lastSync };
}
```