在 DynamoDB 中批量读取和写入项目 - AWS SDK for JavaScript

帮助我们改进AWS SDK for JavaScript版本 3 (V3) 文档,方法是使用反馈链接,或者在上创建议题或拉取请求GitHub.

这些区域有:AWS SDK for JavaScriptV3 API 参考指南详细描述了所有的 API 操作AWS SDK for JavaScript版本 3 (V3)。

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

在 DynamoDB 中批量读取和写入项目

JavaScript code example that applies to Node.js execution

此 Node.js 代码示例演示:

  • 如何在 DynamoDB 表中批量读取和写入项目。

场景

在本示例中,您使用一系列 Node.js 模块在 DynomDynamoDB 表中批量放置项目并批量读取项目。该代码使用 SDK 用于 JavaScript 使用 DynamoDB 客户端类的下列方法来执行批量读取和写入操作:

先条件

要设置和运行此示例,请先完成以下任务:

  • 设置项目环境来运行这些 Node JypeScript 示例,并安装所需的AWS SDK for JavaScript和第三方模块。按照上的说明进行操作 GitHub.

  • 使用用户凭证创建共享配置文件。有关提供共享凭证文件的更多信息,请参阅从共享凭证文件加载 Node.js 中的凭证

  • 创建一个可访问其项目的 DynamoDB 表。有关创建 DynamoDB 表的更多信息,请参阅创建和使用 DynamoDB 中的表.

重要

这些示例使用 ECMAScript6 (ES6)。这需要 Node.js 版本 13.x 或更高版本。要下载并安装最新版本的 Node.js,请参阅Node.js。.

但是,如果你更喜欢使用 CommonJS 语法,请参阅JavaScript ES6/常用JS 语法

注意

有关以下示例中使用的数据类型的信息,请参阅Amazon DynamoDB 中支持的数据类型和命名规则.

Batch 读取项目

创建libs目录创建文件名为的 Node.js 模块ddbClient.js. 将以下代码复制并粘贴到其中,这将创建 DynamoDB 客户端对象。Replace领域使用调用AWSregggg

// Create service client module using ES6 syntax. import { DynamoDBClient } from "@aws-sdk/client-dynamodb"; // Set the AWS Region. const REGION = "REGION"; //e.g. "us-east-1" // Create an Amazon DynamoDB service client object. const ddbClient = new DynamoDBClient({ region: REGION }); export { ddbClient };

此代码可用此处 GitHub.

创建文件名为 ddb_batchgetitem.js 的 Node.js 模块。请确保按前面所示配置开发工具包,包括下载所需的客户端和包。要访问 DynamoDB,请创建一个DynamoDB客户端服务对象。创建一个 JSON 对象,其中包含批量获取项目所需的参数,在此示例中包括要读取的一个或多个表的名称,在各个表中要读取的键的值,以及指定要返回的属性的投影表达式。调用BatchGetItemCommandDynamoDB 服务对象的方法。

注意

ReplaceTABLE_NAME用表的名称KEY_NAME表的主键,键值使用包含属性值的主键行的值,以及ATTRIBUTE_NAME包含属性值的属性列的名称。

注意

以下代码下面的批处理从主键仅由分区键组成的表中检索项目-KEY_NAME-而不是同时使用分区键和排序键。如果表的主键由分区键和排序键组成,则还必须为每个项目指定排序键名称和属性。

// Import required AWS SDK clients and commands for Node.js import { BatchGetItemCommand } from "@aws-sdk/client-dynamodb"; import { ddbClient } from "./libs/ddbClient.js"; // Set the parameters export const params = { RequestItems: { TABLE_NAME: { Keys: [ { KEY_NAME_1: { N: "KEY_VALUE" }, KEY_NAME_2: { N: "KEY_VALUE" }, KEY_NAME_3: { N: "KEY_VALUE" }, }, ], ProjectionExpression: "ATTRIBUTE_NAME", }, }, }; export const run = async () => { try { const data = await ddbClient.send(new BatchGetItemCommand(params)); console.log("Success, items retrieved", data); return data; } catch (err) { console.log("Error", err); } }; run();

要运行示例,请在命令提示符处输入以下内容。

node ddb_batchgetitem.js

这个代码可以找到此处 GitHub.

Batch 写入项目

创建libs目录创建文件名为的 Node.js 模块ddbClient.js. 将以下代码复制并粘贴到其中,这将创建 DynamoDB 客户端对象。Replace领域使用调用AWSregion。

// Create service client module using ES6 syntax. import { DynamoDBClient } from "@aws-sdk/client-dynamodb"; // Set the AWS Region. const REGION = "REGION"; //e.g. "us-east-1" // Create an Amazon DynamoDB service client object. const ddbClient = new DynamoDBClient({ region: REGION }); export { ddbClient };

此代码可用此处 GitHub.

创建文件名为 ddb_batchwriteitem.js 的 Node.js 模块。请确保按前面所示配置开发工具包,包括下载所需的客户端和包。要访问 DynamoDB,请创建一个DynamoDB客户端服务对象。创建一个 JSON 对象,其中包含批量获取项目所需的参数,在本示例中包括要写入项目的表,要写入的各个项目的键,以及属性及值。调用BatchWriteItemCommandDynamoDB 服务对象的方法。

注意

ReplaceTABLE_NAME用表的名称密钥文件的主键,键值使用包含属性值的主键行的值,以及ATTRIBUTE_NAME包含属性值的属性列的名称。

以下代码示例批量将项目写入主键仅由分区键组成的表-KEY_NAME-而不是同时使用分区键和排序键。如果表的主键由分区键和排序键组成,则还必须为每个项目指定排序键名称和属性。

// Import required AWS SDK clients and commands for Node.js import { BatchWriteItemCommand } from "@aws-sdk/client-dynamodb"; import { ddbClient } from "./libs/ddbClient.js"; // Set the parameters export const params = { RequestItems: { TABLE_NAME: [ { PutRequest: { Item: { KEY: { N: "KEY_VALUE" }, ATTRIBUTE_1: { S: "ATTRIBUTE_1_VALUE" }, ATTRIBUTE_2: { N: "ATTRIBUTE_2_VALUE" }, }, }, }, { PutRequest: { Item: { KEY: { N: "KEY_VALUE" }, ATTRIBUTE_1: { S: "ATTRIBUTE_1_VALUE" }, ATTRIBUTE_2: { N: "ATTRIBUTE_2_VALUE" }, }, }, }, ], }, }; export const run = async () => { try { const data = await ddbClient.send(new BatchWriteItemCommand(params)); console.log("Success, items inserted", data); return data; } catch (err) { console.log("Error", err); } }; run();

要运行示例,请在命令提示符处输入以下内容。

node ddb_batchwriteitem.js

这个代码可以找到此处 GitHub.