

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.

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

El objeto de `BatchPutItem` solicitud permite indicar a la función de AWS AppSync DynamoDB que realice una `BatchWriteItem` solicitud a DynamoDB para colocar varios elementos, posiblemente en varias tablas. Para este objeto de solicitud, debe especificar lo siguiente:
+ Los nombres de tabla en los que poner los elementos
+ Los elementos completos que poner en cada tabla

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

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

```
type DynamoDBBatchPutItemRequest = {
  operation: 'BatchPutItem';
  tables: {
    [tableName: string]: { [key: string]: any}[];
  };
};
```

Los campos se definen de la siguiente manera:

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

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

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

** `tables` **  
Las tablas de DynamoDB en las que poner los elementos. Cada entrada de la tabla representa una lista de elementos de DynamoDB que insertar para esta tabla específica. Al menos debe proporcionarse una tabla. Este valor es obligatorio.

Cosas que tener en cuenta:
+ Los elementos totalmente insertados se devuelven en la respuesta, si la operación se realiza correctamente.
+ Si un elemento no se ha insertado en la tabla, aparece un elemento *nulo* en el bloque de datos para esa tabla.
+ Los elementos insertados se ordenan por tabla, según el orden en el que se hayan proporcionado dentro del objeto de solicitud.
+ Cada comando `Put` dentro de un `BatchPutItem` 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*.
+  `BatchPutItem` está limitado a 25 elementos.
+ Esta operación **no** se admite cuando se utiliza con la detección de conflictos. El uso de ambas al mismo tiempo generará un error.

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

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

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

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

```
{
   "data": {
     "authors": [
         null
     ],
     "posts": [
        // Was inserted
        {
          "authorId": "a1",
          "postId": "p2",
          "title": "title"
        }
     ]
   },
   "unprocessedItems": {
     "authors": [
        // This item was not processed due to an error
        {
          "authorId": "a1",
          "name": "a1_name"
        }
      ],
     "posts": []
   }
}
```

El `ctx.error` contiene detalles acerca del error. Está garantizado que los **datos** de claves, **unprocessedItems** y cada clave de tabla que se proporcionó en el objeto de solicitud estarán presentes en el resultado de invocación. Los elementos que se han insertado están 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 **unprocessedItems**.