使用 DynamoDB 文档客户端 - Amazon SDK for JavaScript
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

Amazon SDK for JavaScript V3 API 参考指南详细描述了 Amazon SDK for JavaScript 版本 3 (V3) 的所有 API 操作。

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

使用 DynamoDB 文档客户端

JavaScript code example that applies to Node.js execution

此 Node.js 代码示例演示:

  • 如何使用 DynamoDB 实用工具访问 DynamoDB 表。

情景

DynamoDB 文档客户端通过将属性值的概念抽象化,简化了项目的处理。此抽象化标注提供作为输入参数的原生 JavaScript 类型,以及将标注的响应数据转换为原生 JavaScript 类型。

有关 DynamoDB 文档客户端的更多信息,请参阅 GitHub 上的 @aws-sdk/lib-dynamodb 自述文件。有关使用 Amazon DynamoDB 编程的更多信息,请参阅《Amazon DynamoDB 开发人员指南》中的使用 DynamoDB 进行编程

在本示例中,您使用一系列 Node.js 模块,通过 DynamoDB 实用工具对 DynamoDB 表执行基本操作。该代码使用 SDK for JavaScript,通过 DynamoDB 文档客户端类的下列方法来查询和扫描表:

有关配置 DynamoDB 文档客户端的更多信息,请参阅 @aws-sdk/lib-dynamodb

先决条件任务

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

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

  • 使用用户凭证创建共享配置文件。有关提供共享凭证文件的更多信息,请参阅《Amazon SDK 和工具参考指南》中的共享配置和凭证文件

  • 创建一个可访问其项目的 DynamoDB 表。有关使用 SDK for JavaScript 创建 DynamoDB 表的更多信息,请参阅在 DynamoDB 中创建和使用表。您还可以使用 DynamoDB 控制台创建表。

重要

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

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

注意

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

从表中获取项目

创建文件名为 get.js 的 Node.js 模块。确保如前所示配置 SDK,包括安装所需的客户端和软件包。其中包括 @aws-sdk/lib-dynamodb,一个向 @aws-sdk/client-dynamodb 提供文档客户端功能的库包。接下来,在创建文档客户端期间,按如下所示设置编组和解组配置(作为可选的第二个参数)。接下来,创建客户端。现在创建一个 JSON 对象,其中包含从表获取某个项目所需的参数,在本示例中包括表的名称,表中哈希键的名称,所要获取项目的哈希键的值。调用 DynamoDB 文档客户端的 GetCommand 方法。

import { DynamoDBClient } from "@aws-sdk/client-dynamodb"; import { DynamoDBDocumentClient, GetCommand } from "@aws-sdk/lib-dynamodb"; const client = new DynamoDBClient({}); const docClient = DynamoDBDocumentClient.from(client); export const main = async () => { const command = new GetCommand({ TableName: "AngryAnimals", Key: { CommonName: "Shoebill", }, }); const response = await docClient.send(command); console.log(response); return response; };

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

node get.js

此示例代码可在 GitHub 上的此处找到。

将项目放入表中

创建文件名为 put.js 的 Node.js 模块。确保如前所示配置 SDK,包括安装所需的客户端和软件包。其中包括 @aws-sdk/lib-dynamodb,一个向 @aws-sdk/client-dynamodb 提供文档客户端功能的库包。接下来,在创建文档客户端期间,按如下所示设置编组和解组配置(作为可选的第二个参数)。接下来,创建客户端。创建一个 JSON 对象,其中包含将项目写入表中所需的参数,在本示例中包括表的名称,要添加或更新的项目的描述(包括哈希键和值),以及要在项目上设置的属性的名称和值。调用 DynamoDB 文档客户端的 PutCommand 方法。

import { DynamoDBClient } from "@aws-sdk/client-dynamodb"; import { PutCommand, DynamoDBDocumentClient } from "@aws-sdk/lib-dynamodb"; const client = new DynamoDBClient({}); const docClient = DynamoDBDocumentClient.from(client); export const main = async () => { const command = new PutCommand({ TableName: "HappyAnimals", Item: { CommonName: "Shiba Inu", }, }); const response = await docClient.send(command); console.log(response); return response; };

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

node put.js

此示例代码可在 GitHub 上的此处找到。

更新表中的项目

创建文件名为 update.js 的 Node.js 模块。确保如前所示配置 SDK,包括安装所需的客户端和软件包。其中包括 @aws-sdk/lib-dynamodb,一个向 @aws-sdk/client-dynamodb 提供文档客户端功能的库包。接下来,在创建文档客户端期间,按如下所示设置编组和解组配置(作为可选的第二个参数)。接下来,创建客户端。创建一个 JSON 对象,其中包含将项目写入表中所需的参数,在本示例中包括表的名称,要更新的项目的键,定义要更新的项目的属性的一组 UpdateExpressions,以及您在 ExpressionAttributeValues 参数中将值分配到的令牌。调用 DynamoDB 文档客户端的 UpdateCommand 方法。

import { DynamoDBClient } from "@aws-sdk/client-dynamodb"; import { DynamoDBDocumentClient, UpdateCommand } from "@aws-sdk/lib-dynamodb"; const client = new DynamoDBClient({}); const docClient = DynamoDBDocumentClient.from(client); export const main = async () => { const command = new UpdateCommand({ TableName: "Dogs", Key: { Breed: "Labrador", }, UpdateExpression: "set Color = :color", ExpressionAttributeValues: { ":color": "black", }, ReturnValues: "ALL_NEW", }); const response = await docClient.send(command); console.log(response); return response; };

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

node update.js

此示例代码可在 GitHub 上的此处找到。

查询表

创建文件名为 query.js 的 Node.js 模块。确保如前所示配置 SDK,包括安装所需的客户端和软件包。其中包括 @aws-sdk/lib-dynamodb,一个向 @aws-sdk/client-dynamodb 提供文档客户端功能的库包。创建一个 JSON 对象,其中包含查询表所需的参数,在本示例中包括表名,查询所需的 ExpressionAttributeValues,以及使用这些值定义查询要返回的项目的 KeyConditionExpression。调用 DynamoDB 文档客户端的 QueryCommand 方法。

import { DynamoDBClient } from "@aws-sdk/client-dynamodb"; import { QueryCommand, DynamoDBDocumentClient } from "@aws-sdk/lib-dynamodb"; const client = new DynamoDBClient({}); const docClient = DynamoDBDocumentClient.from(client); export const main = async () => { const command = new QueryCommand({ TableName: "CoffeeCrop", KeyConditionExpression: "OriginCountry = :originCountry AND RoastDate > :roastDate", ExpressionAttributeValues: { ":originCountry": "Ethiopia", ":roastDate": "2023-05-01", }, ConsistentRead: true, }); const response = await docClient.send(command); console.log(response); return response; };

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

node query.js

此示例代码可在 GitHub 上的此处找到。

从表中删除项目

创建文件名为 delete.js 的 Node.js 模块。确保如前所示配置 SDK,包括安装所需的客户端和软件包。其中包括 @aws-sdk/lib-dynamodb,一个向 @aws-sdk/client-dynamodb 提供文档客户端功能的库包。接下来,在创建文档客户端期间,按如下所示设置编组和解组配置(作为可选的第二个参数)。接下来,创建客户端。要访问 DynamoDB,请创建一个 DynamoDB 对象。创建一个 JSON 对象,其中包含从表中删除某个项目所需的参数,在本示例中包括表的名称,以及所要删除项目的哈希键的名称和值。调用 DynamoDB 文档客户端的 DeleteCommand 方法。

import { DynamoDBClient } from "@aws-sdk/client-dynamodb"; import { DynamoDBDocumentClient, DeleteCommand } from "@aws-sdk/lib-dynamodb"; const client = new DynamoDBClient({}); const docClient = DynamoDBDocumentClient.from(client); export const main = async () => { const command = new DeleteCommand({ TableName: "Sodas", Key: { Flavor: "Cola", }, }); const response = await docClient.send(command); console.log(response); return response; };

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

node delete.js

此示例代码可在 GitHub 上的此处找到。