查询和扫描 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 模块来标识要从 DynamoDB 表中检索的一个或多个项目。该代码使用 SDK 用于 JavaScript 使用 DynamoDB 客户端类的下列方法来查询和扫描表:

先条件

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

重要

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

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

注意

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

查询表

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

创建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_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领域使用调用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_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.