在 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 表中删除项目。

场景

在本示例中,您使用一系列 Node.js 模块,通过以下方法,在 DynamoDB 表中读取和写入一个项目:DynamoDB客户端类:

先决项任务

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

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

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

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

重要

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

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

写入项目

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

创建文件名为 ddb_putitem.js 的 Node.js 模块。请确保按前面所示配置开发工具包,包括下载所需的客户端和软件包。要访问 DynamoDB,请创建DynamoDB客户端服务对象。创建一个 JSON 对象,其中包含添加项目所需的参数,在本示例中包括表的名称,定义要设置的属性的映射,以及各个属性的值。调用PutItemCommandDynamoDB 客户端服务对象的方法。

注意

ReplaceTABLE_NAME表的名称。

注意

下面的代码示例写入主键仅由分区键组成的表-CUSTOMER_ID-还有一个排序键-CUSTOMER_NAME. 如果表的主键只有分区键,则只需指定分区键。

// Import required AWS SDK clients and commands for Node.js import { PutItemCommand } from "@aws-sdk/client-dynamodb"; import { ddbClient } from "./libs/ddbClient.js"; // Set the parameters export const params = { TableName: "TABLE_NAME", Item: { CUSTOMER_ID: { N: "001" }, CUSTOMER_NAME: { S: "Richard Roe" }, }, }; export const run = async () => { try { const data = await ddbClient.send(new PutItemCommand(params)); console.log(data); return data; } catch (err) { console.error(err); } }; run();

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

node ddb_putitem.js

可以找到这个示例代码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 上的存储.

创建文件名为 ddb_updateitem.js 的 Node.js 模块。请确保按前面所示配置开发工具包,包括下载所需的客户端和软件包。要访问 DynamoDB,请创建DynamoDB客户端服务对象。创建一个 JSON 对象,其中包含添加项目所需的参数,在本示例中包括表的名称,要更新的键,映射新属性名称的日期表达式,以及各个新属性的值。调用UpdateItemCommandDynamoDB 客户端服务对象的方法。

注意

ReplaceTABLE_NAME表的名称。

注意

以下代码示例写入主键仅由分区键组成的表。如果表的主键只有分区键,则只需指定分区键。

// Import required AWS SDK clients and commands for Node.js import { UpdateItemCommand } from "@aws-sdk/client-dynamodb"; import { ddbClient } from "./libs/ddbClient.js"; 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: {"ATTRIBUTE_TYPE":"KEY_VALUE"}, // For example, 'Season': {N:2}. sortKey: {"ATTRIBUTE_TYPE":"KEY_VALUE"} // For example, 'Episode': {S: "The return"}; (only required if table has sort key). }, // Define expressions for the new or updated attributes UpdateExpression: "set NEW_ATTRIBUTE_NAME_1 = :t, NEW_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 ddbClient.send(new UpdateItemCommand(params)); console.log(data); return data; } catch (err) { console.error(err); } }; run();

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

node ddb_putitem.js

可以找到这个示例代码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 上的存储.

创建文件名为 ddb_getitem.js 的 Node.js 模块。请确保按前面所示配置开发工具包,包括下载所需的客户端和软件包。要访问 DynamoDB,请创建DynamoDB客户端服务对象。要标识所需获取的项目,您必须提供该项目在表中主键的值。默认情况下,GetItemCommand 方法返回为项目定义的所有属性值。要仅获取所有可能属性值的子集,请指定投影表达式。

创建一个 JSON 对象,其中包含获取某个项目所需的参数,在本示例中包括表的名称,所获取项目的键的值,以及确定要检索的项目属性的投影表达式。调用GetItemCommandDynamoDB 客户端服务对象的方法。

注意

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

以下代码示例从表中检索一个项目,其主键仅由分区键组成-KEY_NAME-而不是分开键和排序键。如果表具有由分区键和排序键组成的主键,则还必须指定排序键名称和属性。

// Import required AWS SDK clients and commands for Node.js import { GetItemCommand } from "@aws-sdk/client-dynamodb"; import { ddbClient } from "./libs/ddbClient.js"; // Set the parameters export const params = { TableName: "TABLE_NAME", //TABLE_NAME Key: { KEY_NAME: { N: "KEY_VALUE" }, }, ProjectionExpression: "ATTRIBUTE_NAME", }; export const run = async () => { const data = await ddbClient.send(new GetItemCommand(params)); console.log("Success", data.Item); return data; }; run();

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

node ddb_getitem.js

可以找到这个示例代码。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 上的存储.

创建文件名为 ddb_deleteitem.js 的 Node.js 模块。请确保按前面所示配置开发工具包,包括下载所需的客户端和软件包。要访问 DynamoDB,请创建DynamoDB客户端服务对象。创建一个 JSON 对象,其中包含删除项目所需的参数,在本示例中包括表的名称,以及所删除的项目的键名和值。调用DeleteItemCommandDynamoDB 客户端服务对象的方法。

注意

ReplaceTABLE_NAME表的名称。

注意

下面的代码示例删除主键仅由分区键组成的项目-KEY_NAME-而不是分开键和排序键。如果表具有由分区键和排序键组成的主键,则还必须指定排序键名称和属性。

// Import required AWS SDK clients and commands for Node.js import { DeleteItemCommand } from "@aws-sdk/client-dynamodb"; import { ddbClient } from "./libs/ddbClient.js"; // Set the parameters export const params = { TableName: "CUSTOMER_LIST_NEWEST", Key: { CUSTOMER_ID: { N: "1" }, }, }; export const run = async () => { try { const data = await ddbClient.send(new DeleteItemCommand(params)); console.log("Success, item deleted", data); return data; } catch (err) { console.log("Error", err); /*if (err && err.code === "ResourceNotFoundException") { console.log("Error: Table not found"); } else if (err && err.code === "ResourceInUseException") { console.log("Error: Table in use"); }*/ } }; run();

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

node ddb_deleteitem.js

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