Sincronização
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. Você pode 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
-
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 paraSync
. 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. 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 é de1000
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óslastSync
serão retornados. Este campo é opcional e deve ser preenchido somente depois de recuperar todas as páginas de uma operação inicial deSync
. 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çãoSync
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çãoSync
em toda a tabela de armazenamento delta quando a tabela usa uma chave de partição personalizada. A operaçãoSync
será executada no GSI (criado emgsi_ds_pk
egsi_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).
Para obter mais informações sobre os modelos de mapeamento da resposta, consulte Visão geral do modelo de mapeamento do resolvedor.
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 existirem mais resultados,
nextToken
conterá um token de paginação que você pode usar em outra solicitação. AWS O 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
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)) }