

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.

# TransactGetItems
<a name="aws-appsync-resolver-mapping-template-reference-dynamodb-transact-get-items"></a>

El documento de mapeo de `TransactGetItems` solicitudes le permite indicar al solucionador de AWS AppSync DynamoDB que `TransactGetItems` solicite a DynamoDB la recuperación de varios elementos, posiblemente de varias tablas. Para esta plantilla de solicitud, debe especificar lo siguiente:
+ El nombre de la tabla de cada elemento de solicitud de la que se va a recuperar el elemento
+ La clave de cada elemento de solicitud que se va a recuperar de cada tabla

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

El documento de mapeo de `TransactGetItems` tiene la siguiente estructura:

```
{
    "version": "2018-05-29",
    "operation": "TransactGetItems",
    "transactItems": [
       ## First request item
       {
           "table": "table1",
           "key": {
               "foo": ... typed value,
               "bar": ... typed value
           },
           "projection" : {
                ...
           }
       },
       ## Second request item
       {
           "table": "table2",
           "key": {
               "foo": ... typed value,
               "bar": ... typed value
           },
           "projection" : {
                ...
           }
       }
    ]
}
```

Los campos se definen de la siguiente manera:

## TransactGetItems campos
<a name="TransactGetItems-list"></a>

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

** `version` **  
La versión de la definición de plantilla. Solo se admite `2018-05-29`. Este valor es obligatorio.

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

** `transactItems` **  
Los elementos de solicitud que se van a incluir. El valor es una matriz de elementos de solicitud. Se debe proporcionar al menos un elemento de solicitud. Este valor `transactItems` es obligatorio.    
** `table` **  
La tabla de DynamoDB de la que se va a recuperar el elemento. El valor es una cadena con el nombre de la tabla. Este valor `table` es obligatorio.  
** `key` **  
La clave de DynamoDB que representa la clave principal del elemento que se desea 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)](aws-appsync-resolver-mapping-template-reference-dynamodb-typed-values-request.md).  
**`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/resolver-mapping-template-reference-dynamodb.html#aws-appsync-resolver-mapping-template-reference-dynamodb-projections). Este campo es opcional.

Cosas que tener en cuenta:
+ Si una transacción se realiza correctamente, el orden de los elementos recuperados en el bloque `items` será el mismo que el orden de los elementos de solicitud.
+ Las transacciones se realizan de all-or-nothing alguna manera. Si algún elemento de solicitud causa un error, no se realizará la transacción completa y se devolverán los detalles del error.
+ El hecho de no poder recuperar un elemento de solicitud no es un error. En su lugar, aparece un elemento *null* en el bloque *items (elementos)* en la posición correspondiente.
+ Si se trata de un error en la transacción *TransactionCanceledException*, se rellenará el `cancellationReasons` bloque. El orden de los motivos de cancelación en el bloque `cancellationReasons` será el mismo que el orden de los elementos de solicitud.
+  `TransactGetItems` está limitado a 100 elementos de solicitud.

Para la siguiente plantilla de mapeo de solicitud de ejemplo:

```
{
    "version": "2018-05-29",
    "operation": "TransactGetItems",
    "transactItems": [
       ## First request item
       {
           "table": "posts",
           "key": {
               "post_id": {
                 "S": "p1"
               }
           }
       },
       ## Second request item
       {
           "table": "authors",
           "key": {
               "author_id": {
                 "S": a1
               }
           }
       }
    ]
}
```

Si la transacción se realiza correctamente y solo se recupera el primer elemento solicitado, el resultado de la invocación disponible en `$ctx.result` es el siguiente:

```
{
    "items": [
       {
           // Attributes of the first requested item
           "post_id": "p1",
           "post_title": "title",
           "post_description": "description"
       },
       // Could not retrieve the second requested item
       null,
    ],
    "cancellationReasons": null
}
```

Si la transacción falla *TransactionCanceledException*debido al primer elemento solicitado, el resultado de la invocación disponible `$ctx.result` es el siguiente:

```
{
    "items": null,
    "cancellationReasons": [
       {
           "type":"Sample error type",
           "message":"Sample error message"
       },
       {
           "type":"None",
           "message":"None"
       }
    ]
}
```

El `$ctx.error` contiene detalles acerca del error. Los valores de **items** de claves y **cancellationReasons** estarán presentes sin duda en `$ctx.result`.

Para ver un ejemplo más completo, siga el tutorial sobre transacciones de DynamoDB que se encuentra aquí [Tutorial AppSync : solucionadores de transacciones de DynamoDB](tutorial-dynamodb-transact.md#aws-appsync-tutorial-dynamodb-transact).