

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

# Consulta
<a name="aws-appsync-resolver-mapping-template-reference-dynamodb-query"></a>

O documento de mapeamento de `Query` solicitações permite que você peça ao AWS AppSync resolvedor do DynamoDB que faça uma `Query` solicitação ao DynamoDB e especifique o seguinte:
+ Expressão chave
+ Qual índice usar
+ Qualquer filtro adicional
+ Quantos itens retornar
+ Se deve usar leituras consistentes
+ direção da consulta (para frente ou para trás)
+ Token de paginação

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

```
{
    "version" : "2017-02-28",
    "operation" : "Query",
    "query" : {
        "expression" : "some expression",
        "expressionNames" : {
            "#foo" : "foo"
        },
        "expressionValues" : {
            ":bar" : ... typed value
        }
    },
    "index" : "fooIndex",
    "nextToken" : "a pagination token",
    "limit" : 10,
    "scanIndexForward" : true,
    "consistentRead" : false,
    "select" : "ALL_ATTRIBUTES" | "ALL_PROJECTED_ATTRIBUTES" | "SPECIFIC_ATTRIBUTES",
    "filter" : {
        ...
    },
    "projection" : {
        ...
    }
}
```

Os campos são definidos da seguinte forma:

## Campos de consulta
<a name="query-list"></a>

### Lista de campos de consulta
<a name="query-list-col"></a>

** `version` **  
As versões de definição de modelo `2017-02-28` e `2018-05-29` são compatíveis atualmente. Este valor é obrigatório.

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

** `query` **  
A seção `query` permite especificar uma expressão de condição de chave que descreve quais itens recuperar do DynamoDB. Para obter mais informações sobre como escrever expressões de condição chave, consulte a documentação do [ KeyConditions DynamoDB](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/LegacyConditionalParameters.KeyConditions.html). Essa seção deve ser especificada.    
** `expression` **  
A expressão da consulta. Esse campo deve ser especificado.  
** `expressionNames` **  
As substituições para espaços reservados de *nome* do atributo da expressão, na forma de pares chave-valor. A chave corresponde a um espaço reservado de nome usado em `expression` e o valor deve ser uma string que corresponde ao nome do atributo do item no DynamoDB. Esse campo é opcional e deve ser preenchido apenas por substituições para espaços reservados de nome do atributo da expressão usados em `expression`.  
** `expressionValues` **  
As substituições para espaços reservados de *valor* do atributo da expressão, na forma de pares chave-valor. A chave corresponde a um espaço reservado de valor usado na `expression` e o valor deve ser um valor digitado. Para obter mais informações sobre como especificar um "valor digitado", consulte [Sistema de tipo (Mapeamento de solicitação)](aws-appsync-resolver-mapping-template-reference-dynamodb-typed-values-request.md). Este valor é obrigatório. Esse campo é opcional e deve ser preenchido apenas por substituições para espaços reservados de valor do atributo da expressão usados em `expression`.

** `filter` **  
Um filtro adicional 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.

** `index` **  
O nome do índice para consulta. A operação de consulta do DynamoDB permite que você faça a varredura em Índices secundários locais e Índices secundários globais, além do índice de chave primária para uma chave de hash. Se especificado, isso informa o DynamoDB para consultar o índice especificado. Se omitido, o índice da chave primária será consultado.

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

** `limit` **  
O número máximo de itens a serem avaliados (não necessariamente o número de itens correspondentes). Esse campo é opcional.

** `scanIndexForward` **  
Um booliano que indica se a consulta deve ser para frente ou para trás. Esse campo é opcional e usa como padrão `true`.

** `consistentRead` **  
Um booleano que indica se deseja usar leituras consistentes ao consultar o DynamoDB. Esse campo é opcional e usa como padrão `false`.

** `select` **  
Por padrão, o AWS AppSync resolvedor do DynamoDB retorna somente atributos que são projetados no índice. Se forem necessários mais atributos, você poderá definir esse campo. Esse campo é opcional. Os valores compatíveis são:    
** `ALL_ATTRIBUTES` **  
Retorna todos os atributos de item da tabela ou índice especificado. Se você consultar um índice secundário local, o DynamoDB buscará todo o item da tabela pai para cada item correspondente no índice. Se o índice estiver configurado para projetar todos os atributos de item, todos os dados podem ser obtidos no índice secundário local, e nenhuma busca será necessária.  
** `ALL_PROJECTED_ATTRIBUTES` **  
Permitido apenas ao consultar um índice. Recupera todos os atributos que foram projetados no índice. Se o índice estiver configurado para projetar todos os atributos, esse valor de retorno é equivalente a especificar `ALL_ATTRIBUTES`.  
**`SPECIFIC_ATTRIBUTES`**  
Retorna somente os atributos listados em `expression` de `projection`. Esse valor de retorno é equivalente a especificar `expression` de `projection` sem especificar nenhum valor para `Select`.

**`projection`**  
Uma projeção usada para especificar os atributos a serem retornados da operação do DynamoDB. Para obter mais informações sobre projeções, consulte [Projeções](https://docs.aws.amazon.com/appsync/latest/devguide/resolver-mapping-template-reference-dynamodb.html#aws-appsync-resolver-mapping-template-reference-dynamodb-projections). Esse campo é opcional.

Os resultados 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
}
```

Os campos são definidos da seguinte forma:

** `items` **  
Uma lista que contém os itens retornados pela consulta do DynamoDB.

** `nextToken` **  
Se existirem mais resultados, `nextToken` conterá um token de paginação que você pode usar em outra solicitação. Observe que 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. Observe também que esses tokens de paginação não podem ser usados em diferentes resolvedores.

** `scannedCount` **  
O número de itens que corresponderam à expressão de condição da consulta, antes que uma expressão de filtro (se houve) fosse aplicada.

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

Veja a seguir um modelo de mapeamento para uma consulta `getPosts(owner: ID!)` do GraphQL.

Nesse exemplo, um índice secundário global em uma tabela é consultado para retornar todas as postagens de propriedade do ID especificado.

```
{
    "version" : "2017-02-28",
    "operation" : "Query",
    "query" : {
        "expression" : "ownerId = :ownerId",
        "expressionValues" : {
            ":ownerId" : $util.dynamodb.toDynamoDBJson($context.arguments.owner)
        }
    },
    "index" : "owner-index"
}
```

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