

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="js-aws-appsync-resolver-reference-dynamodb-transact-get-items"></a>

El objeto de `TransactGetItems` solicitud le permite indicar a la función de AWS AppSync DynamoDB que realice una `TransactGetItems` solicitud a DynamoDB para recuperar varios elementos, posiblemente de varias tablas. Para este objeto 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 objeto de solicitud `TransactGetItems` tiene la siguiente estructura:

```
type DynamoDBTransactGetItemsRequest = {
  operation: 'TransactGetItems';
  transactItems: { table: string; key: { [key: string]: any }; projection?: { expression: string; expressionNames?: { [key: string]: string }; }[];
  };
};
```

Los campos se definen de la siguiente manera:

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

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

** `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)](https://docs.aws.amazon.com/appsync/latest/devguide/js-resolver-reference-dynamodb.html#js-aws-appsync-resolver-reference-dynamodb-typed-values-request).  
**`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 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 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: 'TransactGetItems',
    transactItems: [
      {
        table: 'posts',
        key: util.dynamodb.toMapValues({ postId }),
      },
      {
        table: 'authors',
        key: util.dynamodb.toMapValues({ authorId }),
      },
    ],
  };
}
```

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