Lectura y escritura de elementos en lotes en DynamoDB - AWS SDK for JavaScript

La Guía de referencia de la API de AWS SDK for JavaScript V3 describe en detalle todas las operaciones de la API para la versión 3 (V3) de AWS SDK for JavaScript.

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.

Lectura y escritura de elementos en lotes en DynamoDB

JavaScript code example that applies to Node.js execution

Este ejemplo de código de Node.js muestra:

  • Cómo leer y escribir lotes de elementos en una tabla de DynamoDB.

El escenario

En este ejemplo, va a utilizar una serie de módulos de Node.js para poner un lote de elementos de una tabla de DynamoDB y leer un lote de elementos. El código usa el SDK JavaScript para realizar operaciones de lectura y escritura por lotes mediante los siguientes métodos de la clase de cliente DynamoDB:

Tareas previas necesarias

Para configurar y ejecutar este ejemplo, primero debe completar las tareas siguientes:

  • Configure el entorno del proyecto para ejecutar estos TypeScript ejemplos de Node e instale los módulos necesarios AWS SDK for JavaScript y de terceros. Siga las instrucciones que figuran en GitHub.

  • Cree un archivo de configuraciones compartidas con sus credenciales de usuario. Para obtener más información sobre cómo proporcionar un archivo de credenciales compartido, consulte Archivos de configuración y credenciales compartidos en la Guía de referencia de SDK y herramientas de AWS.

  • Cree una tabla de DynamoDB a cuyos elementos pueda obtener acceso. Para obtener más información acerca de cómo crear una tabla de DynamoDB consulte Creación y uso de tablas en DynamoDB.

importante

En estos ejemplos se utiliza ECMAScript6 (ES6). Requiere la versión 13.x o superior de Node.js. Para descargar e instalar la versión más reciente de Node.js, consulte Descargas de Node.js.

No obstante, si prefiere utilizar la sintaxis CommonJS, consulte Sintaxis ES6/commonJS de JavaScript.

nota

Para obtener información sobre los tipos de datos utilizados en estos ejemplos, consulte Tipos de datos y reglas de denominación compatibles en Amazon DynamoDB.

Lectura de elementos en lotes

Cree un módulo de Node.js con el nombre de archivo batch-get-item.js. Asegúrese de configurar el SDK como se ha mostrado anteriormente, incluida la descarga de los clientes y paquetes necesarios. Para acceder a DynamoDB, cree un objeto de servicio de cliente de DynamoDB. Cree un objeto JSON que contenga los parámetros necesarios para obtener un lote de elementos, que en este ejemplo incluye el nombre de una o varias tablas donde se leerá, los valores de claves para leer en cada tabla y la expresión de proyección que especifica los atributos que se devolverán. Llame al método BatchGetItemCommand del objeto de servicio de DynamoDB.

import { BatchGetItemCommand, DynamoDBClient } from "@aws-sdk/client-dynamodb"; const client = new DynamoDBClient({}); export const main = async () => { const command = new BatchGetItemCommand({ RequestItems: { // Each key in this object is the name of a table. This example refers // to a PageAnalytics table. PageAnalytics: { // Each entry in Keys is an object that specifies a primary key. Keys: [ { // "PageName" is the partition key (simple primary key). // "S" specifies a string as the data type for the value "Home". // For more information about data types, // see https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/HowItWorks.NamingRulesDataTypes.html#HowItWorks.DataTypes and // https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Programming.LowLevelAPI.html#Programming.LowLevelAPI.DataTypeDescriptors PageName: { S: "Home" }, }, { PageName: { S: "About" }, }, ], // Only return the "PageName" and "PageViews" attributes. ProjectionExpression: "PageName, PageViews", }, }, }); const response = await client.send(command); console.log(response.Responses["PageAnalytics"]); return response; };

Para ejecutar el ejemplo, escriba lo siguiente en la línea de comandos.

node batch-get-item.js

Este código de ejemplo se puede encontrar aquí en GitHub.

Escritura de elementos en lotes

Cree un módulo de Node.js con el nombre de archivo batch-write-item.js. Asegúrese de configurar el SDK como se ha mostrado anteriormente, incluida la descarga de los clientes y paquetes necesarios. Para acceder a DynamoDB, cree un objeto de servicio de cliente de DynamoDB. Cree un objeto JSON que contenga los parámetros necesarios para obtener un lote de elementos, que en este ejemplo incluye la tabla en la que desea escribir elementos, las claves que desea escribir para cada elemento y los atributos junto con sus valores. Llame al método BatchWriteItemCommand del objeto de servicio de DynamoDB.

import { BatchWriteItemCommand, DynamoDBClient, } from "@aws-sdk/client-dynamodb"; const client = new DynamoDBClient({}); export const main = async () => { const command = new BatchWriteItemCommand({ RequestItems: { // Each key in this object is the name of a table. This example refers // to a Coffees table. Coffees: [ // Each entry in Coffees is an object that defines either a PutRequest or DeleteRequest. { // Each PutRequest object defines one item to be inserted into the table. PutRequest: { // The keys of Item are attribute names. Each attribute value is an object with a data type and value. // For more information about data types, // see https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/HowItWorks.NamingRulesDataTypes.html#HowItWorks.DataTypes Item: { Name: { S: "Donkey Kick" }, Process: { S: "Wet-Hulled" }, Flavors: { SS: ["Earth", "Syrup", "Spice"] }, }, }, }, { PutRequest: { Item: { Name: { S: "Flora Ethiopia" }, Process: { S: "Washed" }, Flavors: { SS: ["Stone Fruit", "Toasted Almond", "Delicate"] }, }, }, }, ], }, }); const response = await client.send(command); console.log(response); return response; };

Para ejecutar el ejemplo, escriba lo siguiente en la línea de comandos.

node batch-write-item.js

Este código de ejemplo se puede encontrar aquí en GitHub.