

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

# BatchGetItem
<a name="js-aws-appsync-resolver-reference-dynamodb-batch-get-item"></a>

O objeto de `BatchGetItem` solicitação permite que você peça à função do AWS AppSync DynamoDB que faça uma `BatchGetItem` solicitação ao DynamoDB para recuperar vários itens, potencialmente em várias tabelas. Para esse objeto de solicitação, você deve especificar o seguinte:
+ Os nomes da tabela da qual recuperar os itens
+ As chaves dos itens a serem recuperadas de cada tabela

Os limites `BatchGetItem` do DynamoDB se aplicam e **nenhuma expressão de condição** pode ser fornecida.

O objeto de solicitação `BatchGetItem` tem a seguinte estrutura:

```
type DynamoDBBatchGetItemRequest = {
  operation: 'BatchGetItem';
  tables: {
    [tableName: string]: {
      keys: { [key: string]: any }[];
      consistentRead?: boolean; 
      projection?: {
        expression: string;
        expressionNames?: { [key: string]: string };
      };
    };
  };
};
```

Os campos são definidos da seguinte forma:

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

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

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

** `tables` **  
As tabelas do DynamoDB das quais recuperar os itens. O valor é um mapa no qual os nomes das tabelas são especificados como as chaves do mapa. Pelo menos uma tabela deve ser fornecida. Este valor `tables` é obrigatório.    
** `keys` **  
Lista de chaves do DynamoDB representando a chave primária dos itens a serem recuperados. 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).  
** `consistentRead` **  
Se deve usar uma leitura consistente ao executar uma *GetItem*operação. Esse valor é opcional e o padrão é *falso*.  
**`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/js-resolver-reference-dynamodb.html#js-aws-appsync-resolver-reference-dynamodb-projections). Esse campo é opcional.

Informações importantes:
+ Se um item não tiver sido recuperado da tabela, um elemento *nulo* aparecerá no bloco de dados dessa tabela.
+ Os resultados de invocação são classificados por tabela, com base na ordem em que foram fornecidos dentro do objeto de solicitação.
+ Cada comando `Get` dentro de um `BatchGetItem` é atômico, no entanto, um lote pode ser parcialmente processado. Se um lote for parcialmente processado devido a um erro, as chaves não processadas serão retornadas como parte do resultado da chamada dentro do bloco *unprocessedKeys*.
+  O `BatchGetItem` é limitado a 100 chaves.

Veja a seguir um exemplo de manipulador de solicitação de função:

```
import { util } from '@aws-appsync/utils';

export function request(ctx) {
  const { authorId, postId } = ctx.args;
  return {
    operation: 'BatchGetItem',
    tables: {
      authors: [util.dynamodb.toMapValues({ authorId })],
      posts: [util.dynamodb.toMapValues({ authorId, postId })],
    },
  };
}
```

O resultado de invocação disponível em `ctx.result` é o seguinte:

```
{
   "data": {
     "authors": [null],
     "posts": [
        // Was retrieved
        {
          "authorId": "a1",
          "postId": "p2",
          "postTitle": "title",
          "postDescription": "description",
        }
     ]
   },
   "unprocessedKeys": {
     "authors": [
        // This item was not processed due to an error
        {
          "authorId": "a1"
        }
      ],
     "posts": []
   }
}
```

O `ctx.error` contém detalhes sobre o erro. As chaves **data**, **unprocessedKeys** e todas as chaves de tabela fornecidas no resultado do objeto de solicitação de função estão presentes no resultado da invocação. Os itens que foram excluídos aparecem no bloco **data**. Itens que não foram processados são marcados como *nulos* no bloco de dados e colocados dentro do bloco **unprocessedKeys**.