查询和扫描 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 表的项目。

场景

仅使用主键属性值查找表或二级索引中的项目。您必须提供分区键名称和要搜索的值。您还可提供排序键名称和值,并使用比较运算符来优化搜索结果。扫描操作通过检查指定表中的每个项目来查找项目。

在本示例中,您使用一系列 Node.js 模块来标识要从 DynamoDB 表中检索的一个或多个项目。该代码使用 SDK JavaScript 要使用 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_query.js 的 Node.js 模块。请确保按前面所示配置开发工具包,包括下载所需的客户端和软件包。要访问 DynamoDB,请创建DynamoDB客户端服务对象。创建一个 JSON 对象,其中包含查询表所需的参数,在本示例中包括表名,查询所需的 ExpressionAttributeValues,使用这些值定义查询要返回的项目的 KeyConditionExpression,以及各个项目要返回的属性值的名称。调用QueryCommandDynamoDB 服务对象的方法。

表的主键由以下属性组成:

  • Season

  • Episode

你可以运行代码GitHub 上的存储创建此查询目标的表以及代码GitHub 上的存储来填充表格。

// Import required AWS SDK clients and commands for Node.js import { QueryCommand } from "@aws-sdk/client-dynamodb"; import { ddbClient } from "./libs/ddbClient.js"; // Set the parameters export const params = { KeyConditionExpression: "Season = :s and Episode > :e", FilterExpression: "contains (Subtitle, :topic)", ExpressionAttributeValues: { ":s": { N: "1" }, ":e": { N: "2" }, ":topic": { S: "SubTitle" }, }, ProjectionExpression: "Episode, Title, Subtitle", TableName: "EPISODES_TABLE", }; export const run = async () => { try { const data = await ddbClient.send(new QueryCommand(params)); return data; data.Items.forEach(function (element, index, array) { console.log(element.Title.S + " (" + element.Subtitle.S + ")"); }); } catch (err) { console.error(err); } }; run();

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

node ddb_query.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_scan.js 的 Node.js 模块。请确保按前面所示配置开发工具包,包括下载所需的客户端和软件包。要访问 DynamoDB,请创建DynamoDB客户端服务对象。创建一个 JSON 对象,其中包含扫描表中项目所需的参数,在本示例中包括表的名称,各个匹配项目要返回的属性值的列表,以及用于筛选结果集来查找包含指定短语的项目的表达式。调用ScanQueryDynamoDB 服务对象的方法。

// Import required AWS SDK clients and commands for Node.js import { ScanCommand } from "@aws-sdk/client-dynamodb"; import { ddbClient } from "./libs/ddbClient.js"; // Set the parameters. export const params = { // Specify which items in the results are returned. FilterExpression: "Subtitle = :topic AND Season = :s AND Episode = :e", // Define the expression attribute value, which are substitutes for the values you want to compare. ExpressionAttributeValues: { ":topic": { S: "SubTitle2" }, ":s": { N: "1" }, ":e": { N: "2" }, }, // Set the projection expression, which the the attributes that you want. ProjectionExpression: "Season, Episode, Title, Subtitle", TableName: "EPISODES_TABLE", }; export const run = async () => { try { const data = await ddbClient.send(new ScanCommand(params)); return data; data.Items.forEach(function (element, index, array) { console.log(element.Title.S + " (" + element.Subtitle.S + ")"); }); } catch (err) { console.log("Error", err); } } run();

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

node ddb_scan.js

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