

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

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

El objeto de `BatchGetItem` solicitud permite indicar a la función de AWS AppSync DynamoDB que realice una `BatchGetItem` solicitud a DynamoDB para recuperar varios elementos, posiblemente de varias tablas. Para este objeto de solicitud, debe especificar lo siguiente:
+ Los nombres de tabla de los que recuperar los elementos
+ Las claves de los elementos que recuperar de cada tabla

Se aplican los límites de `BatchGetItem` de DynamoDB y no puede proporcionar **ninguna expresión de condición**.

El objeto de solicitud `BatchGetItem` tiene la siguiente estructura:

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

Los campos se definen de la siguiente manera:

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

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

** `operation` **  
La operación de DynamoDB que se ha de realizar. Para ejecutar la operación de DynamoDB `BatchGetItem`, este valor se debe establecer en `BatchGetItem`. Este valor es obligatorio.

** `tables` **  
Las tablas de DynamoDB de las que recuperar los elementos. El valor es un mapa en el que se especifican los nombres de las tablas como claves del mapa. Al menos debe proporcionarse una tabla. Este valor `tables` es obligatorio.    
** `keys` **  
Lista de claves de DynamoDB que representan la clave principal de los elementos que se van a recuperar. Los elementos de DynamoDB pueden tener solo una clave hash o una clave hash y una clave de clasificación, dependiendo de la estructura de la tabla. Para obtener más información sobre cómo especificar un “valor con tipo”, consulte [Sistema de tipos (mapeo de solicitud)](https://docs.aws.amazon.com/appsync/latest/devguide/js-resolver-reference-dynamodb.html#js-aws-appsync-resolver-reference-dynamodb-typed-values-request).  
** `consistentRead` **  
Si se debe utilizar una lectura coherente al ejecutar una *GetItem*operación. Este valor es opcional y de forma predeterminada es *falso*.  
**`projection`**  
Proyección que se utiliza para especificar los atributos que se devolverán de la operación de DynamoDB. Para obtener más información acerca de las proyecciones, consulte la sección [Proyecciones](https://docs.aws.amazon.com/appsync/latest/devguide/js-resolver-reference-dynamodb.html#js-aws-appsync-resolver-reference-dynamodb-projections). Este campo es opcional.

Cosas que tener en cuenta:
+ Si un elemento no se ha recuperado de la tabla, aparece un elemento *nulo* en el bloque de datos para esa tabla.
+ Los resultados de invocación se ordenan por tabla, según el orden en el que se hayan proporcionado dentro del objeto de solicitud.
+ Cada comando `Get` dentro de un `BatchGetItem` es atómico, sin embargo, un lote se puede procesar parcialmente. Si un lote se procesa parcialmente debido a un error, la claves sin procesar se devuelven como parte del resultado de invocación dentro del bloque *unprocessedKeys*.
+  `BatchGetItem` está limitado a 100 claves.

Para el siguiente controlador de solicitudes de función de ejemplo:

```
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 })],
    },
  };
}
```

El resultado de invocación disponible en `ctx.result` es el siguiente:

```
{
   "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": []
   }
}
```

El `ctx.error` contiene detalles acerca del error. Está garantizado que los **datos** de claves, **unprocessedKeys** y cada clave de tabla que se proporcionó en el resultado del objeto de solicitud de función estarán presentes en el resultado de invocación. Los elementos que se han eliminado aparecen en el bloque de **datos**. Los elementos que no se hayan procesado se marcan como *null* dentro del bloque de datos y se colocan dentro del bloque **unprocessedKeys**.