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

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

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

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

使用 DynamoDB 文档客户端

JavaScript code example that applies to Node.js execution

此 Node.js 代码示例演示:

  • 如何使用 DynamoDB 实用程序访问 DynamoDB 表的方法。

情景

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

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

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

  • getItem

  • putItem

  • UpdateItem

  • query

  • deleteItem

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

先决条件任务

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

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

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

  • 创建一个可访问其项目的 DynamoDB 表。有关使用适用于 JavaScript 的开发工具包创建 DynamoDB 表的更多信息,请参阅。在 DynamoDB 中创建和使用表. 您也可以使用DynamoDB 控制台创建表。

重要

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

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

从表中获取项目

创建libs目录,然后创建文件名为的 Node.js 模块。ddbDocClient.js. 将下面的代码复制并粘贴到其中,这将创建 DynamoDB 文档客户端对象。Replace领域使用您的Amazonregion region。

// Create service client module using ES6 syntax. import { DynamoDBDocumentClient} from "@aws-sdk/lib-dynamodb"; import {ddbClient} from "./ddbClient"; const marshallOptions = { // Whether to automatically convert empty strings, blobs, and sets to `null`. convertEmptyValues: false, // false, by default. // Whether to remove undefined values while marshalling. removeUndefinedValues: false, // false, by default. // Whether to convert typeof object to map attribute. convertClassInstanceToMap: false, // false, by default. }; const unmarshallOptions = { // Whether to return numbers as a string instead of converting them to native JavaScript numbers. wrapNumbers: false, // false, by default. }; const translateConfig = { marshallOptions, unmarshallOptions }; // Create the DynamoDB Document client. const ddbDocClient = DynamoDBDocumentClient.from(ddbClient, translateConfig); export { ddbDocClient };

此代码是可用的GitHub 上的存储.

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

// 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 上的存储.

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

import { GetCommand } from "@aws-sdk/lib-dynamodb"; import { ddbDocClient } from "./libs/ddbDocClient"; // Set the parameters. export const params = { TableName: "TABLE_NAME", /* Convert the key JavaScript object you are retrieving to the required Amazon DynamoDB record. The format of values specifies the datatype. The following list demonstrates different datatype formatting requirements: String: "String", NumAttribute: 1, BoolAttribute: true, ListAttribute: [1, "two", false], MapAttribute: { foo: "bar" }, NullAttribute: null */ Key: { primaryKey: "VALUE", // For example, 'Season': 2. sortKey: "VALUE", // For example, 'Episode': 1; (only required if table has sort key). }, }; export const run = async () => { try { const data = await ddbDocClient.send(new GetCommand(params)); console.log("Success :", data); // console.log("Success :", data.Item); return data; } catch (err) { console.log("Error", err); } }; run();

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

node ddbdoc_get_item.js // To use JavaScript, enter 'node ddbdoc_get_item.js

可以找到这个示例代码GitHub 上的存储.

将项目放入表中

创建libs目录,然后创建文件名为的 Node.js 模块。ddbDocClient.js. 将下面的代码复制并粘贴到其中,这将创建 DynamoDB 文档客户端对象。Replace领域使用您的Amazonregion region。

// Create service client module using ES6 syntax. import { DynamoDBDocumentClient} from "@aws-sdk/lib-dynamodb"; import {ddbClient} from "./ddbClient"; const marshallOptions = { // Whether to automatically convert empty strings, blobs, and sets to `null`. convertEmptyValues: false, // false, by default. // Whether to remove undefined values while marshalling. removeUndefinedValues: false, // false, by default. // Whether to convert typeof object to map attribute. convertClassInstanceToMap: false, // false, by default. }; const unmarshallOptions = { // Whether to return numbers as a string instead of converting them to native JavaScript numbers. wrapNumbers: false, // false, by default. }; const translateConfig = { marshallOptions, unmarshallOptions }; // Create the DynamoDB Document client. const ddbDocClient = DynamoDBDocumentClient.from(ddbClient, translateConfig); export { ddbDocClient };

此代码是可用的GitHub 上的存储.

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

// 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 上的存储.

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

import { PutCommand } from "@aws-sdk/lib-dynamodb"; import { ddbDocClient } from "./libs/ddbDocClient"; // Set the parameters. export const params = { TableName: "TABLE_NAME", /* Convert the key JavaScript object you are adding to the required Amazon DynamoDB record. The format of values specifies the datatype. The following list demonstrates different datatype formatting requirements: String: "String", NumAttribute: 1, BoolAttribute: true, ListAttribute: [1, "two", false], MapAttribute: { foo: "bar" }, NullAttribute: null */ Item: { primaryKey: "VALUE_1", // For example, 'Season': 2 sortKey: "VALUE_2", // For example, 'Episode': 2 (only required if table has sort key) NEW_ATTRIBUTE_1: "NEW_ATTRIBUTE_1_VALUE", //For example 'Title': 'The Beginning' }, }; export const run = async () => { try { const data = await ddbDocClient.send(new PutCommand(params)); console.log("Success - item added or updated", data); return data; } catch (err) { console.log("Error", err); } }; run();

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

node ddbdoc_put_item.js // To use JavaScript, enter 'node ddbdoc_put_item.js'

可以找到这个示例代码GitHub 上的存储.

更新表中的项目

创建libs目录,然后创建文件名为的 Node.js 模块。ddbDocClient.js. 将下面的代码复制并粘贴到其中,这将创建 DynamoDB 文档客户端对象。Replace领域使用您的Amazonregion region。

// Create service client module using ES6 syntax. import { DynamoDBDocumentClient} from "@aws-sdk/lib-dynamodb"; import {ddbClient} from "./ddbClient"; const marshallOptions = { // Whether to automatically convert empty strings, blobs, and sets to `null`. convertEmptyValues: false, // false, by default. // Whether to remove undefined values while marshalling. removeUndefinedValues: false, // false, by default. // Whether to convert typeof object to map attribute. convertClassInstanceToMap: false, // false, by default. }; const unmarshallOptions = { // Whether to return numbers as a string instead of converting them to native JavaScript numbers. wrapNumbers: false, // false, by default. }; const translateConfig = { marshallOptions, unmarshallOptions }; // Create the DynamoDB Document client. const ddbDocClient = DynamoDBDocumentClient.from(ddbClient, translateConfig); export { ddbDocClient };

此代码是可用的GitHub 上的存储.

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

// 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 上的存储.

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

import { UpdateCommand } from "@aws-sdk/lib-dynamodb"; import { ddbDocClient } from "./libs/ddbDocClient"; // Set the parameters export const params = { TableName: "TABLE_NAME", /* Convert the attribute JavaScript object you are updating to the required Amazon DynamoDB record. The format of values specifies the datatype. The following list demonstrates different datatype formatting requirements: String: "String", NumAttribute: 1, BoolAttribute: true, ListAttribute: [1, "two", false], MapAttribute: { foo: "bar" }, NullAttribute: null */ Key: { primaryKey: "VALUE_1", // For example, 'Season': 2. sortKey: "VALUE_2", // For example, 'Episode': 1; (only required if table has sort key). }, // Define expressions for the new or updated attributes UpdateExpression: "set ATTRIBUTE_NAME_1 = :t, ATTRIBUTE_NAME_2 = :s", // For example, "'set Title = :t, Subtitle = :s'" ExpressionAttributeValues: { ":t": "NEW_ATTRIBUTE_VALUE_1", // For example ':t' : 'NEW_TITLE' ":s": "NEW_ATTRIBUTE_VALUE_2", // For example ':s' : 'NEW_SUBTITLE' }, ReturnValues: "ALL_NEW" }; export const run = async () => { try { const data = await ddbDocClient.send(new UpdateCommand(params)); console.log("Success - item added or updated", data); return data; } catch (err) { console.log("Error", err); } }; run();

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

node ddbdoc_update_item.js

可以找到这个示例代码GitHub 上的存储.

查询表

创建libs目录,然后创建文件名为的 Node.js 模块。ddbDocClient.js. 将下面的代码复制并粘贴到其中,这将创建 DynamoDB 文档客户端对象。Replace领域使用您的Amazonregion region。

// Create service client module using ES6 syntax. import { DynamoDBDocumentClient} from "@aws-sdk/lib-dynamodb"; import {ddbClient} from "./ddbClient"; const marshallOptions = { // Whether to automatically convert empty strings, blobs, and sets to `null`. convertEmptyValues: false, // false, by default. // Whether to remove undefined values while marshalling. removeUndefinedValues: false, // false, by default. // Whether to convert typeof object to map attribute. convertClassInstanceToMap: false, // false, by default. }; const unmarshallOptions = { // Whether to return numbers as a string instead of converting them to native JavaScript numbers. wrapNumbers: false, // false, by default. }; const translateConfig = { marshallOptions, unmarshallOptions }; // Create the DynamoDB Document client. const ddbDocClient = DynamoDBDocumentClient.from(ddbClient, translateConfig); export { ddbDocClient };

此代码是可用的GitHub 上的存储.

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

// 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 上的存储.

此示例查询包含有关视频系列的剧集信息的表,返回第二季第九集之后,字幕中包含指定短语的每集的名称和字幕。

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

import { QueryCommand } from "@aws-sdk/lib-dynamodb"; import { ddbDocClient } from "./libs/ddbDocClient"; // Set the parameters export const params = { TableName: "TABLE_NAME", /* Convert the JavaScript object defining the objects to the required Amazon DynamoDB record. The format of values specifies the datatype. The following list demonstrates different datatype formatting requirements: String: "String", NumAttribute: 1, BoolAttribute: true, ListAttribute: [1, "two", false], MapAttribute: { foo: "bar" }, NullAttribute: null */ ExpressionAttributeValues: { ":s": 1, ":e": 1, ":topic": "Title2", }, // Specifies the values that define the range of the retrieved items. In this case, items in Season 2 before episode 9. KeyConditionExpression: "Season = :s and Episode > :e", // Filter that returns only episodes that meet previous criteria and have the subtitle 'The Return' FilterExpression: "contains (Subtitle, :topic)", }; export const run = async () => { try { const data = await ddbDocClient.send(new QueryCommand(params)); console.log("Success. Item details: ", data); // console.log("Success. Item details: ", data.Items); return data; } catch (err) { console.log("Error", err); } }; run();

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

node ddbdoc_query_item.js

可以找到这个示例代码GitHub 上的存储.

从表中删除项目

创建libs目录,然后创建文件名为的 Node.js 模块。ddbDocClient.js. 将下面的代码复制并粘贴到其中,这将创建 DynamoDB 文档客户端对象。Replace领域使用您的Amazonregion region。

// Create service client module using ES6 syntax. import { DynamoDBDocumentClient} from "@aws-sdk/lib-dynamodb"; import {ddbClient} from "./ddbClient"; const marshallOptions = { // Whether to automatically convert empty strings, blobs, and sets to `null`. convertEmptyValues: false, // false, by default. // Whether to remove undefined values while marshalling. removeUndefinedValues: false, // false, by default. // Whether to convert typeof object to map attribute. convertClassInstanceToMap: false, // false, by default. }; const unmarshallOptions = { // Whether to return numbers as a string instead of converting them to native JavaScript numbers. wrapNumbers: false, // false, by default. }; const translateConfig = { marshallOptions, unmarshallOptions }; // Create the DynamoDB Document client. const ddbDocClient = DynamoDBDocumentClient.from(ddbClient, translateConfig); export { ddbDocClient };

此代码是可用的GitHub 上的存储.

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

// 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 上的存储.

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

import { DeleteCommand } from "@aws-sdk/lib-dynamodb"; import { ddbDocClient } from "./libs/ddbDocClient"; // Set the parameters export const params = { TableName: "TABLE_NAME", /* Convert the key JavaScript object you are deleting to the required Amazon DynamoDB record. The format of values specifies the datatype. The following list demonstrates different datatype formatting requirements: String: "String", NumAttribute: 1, BoolAttribute: true, ListAttribute: [1, "two", false], MapAttribute: { foo: "bar" }, NullAttribute: null */ Key: { primaryKey: "VALUE_1", // For example, 'Season': 2. sortKey: "VALUE_2", // For example, 'Episode': 1; (only required if table has sort key). }, }; export const run = async () => { try { const data = await ddbDocClient.send(new DeleteCommand(params)); console.log("Success - item deleted"); return data; } catch (err) { console.log("Error", err); } }; run();

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

node ddbdoc_delete_item.js

可以找到这个示例代码GitHub 上的存储.