查詢和掃描 DynamoDB 資料表 - AWS SDK for JavaScript

我們宣布了即將推 end-of-support 出的 AWS SDK for JavaScript v2。我們建議您移轉至 AWS SDK for JavaScript v3。有關日期,其他詳細信息以及如何遷移的信息,請參閱鏈接的公告。

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

查詢和掃描 DynamoDB 資料表

JavaScript code example that applies to Node.js execution

這個 Node.js 程式碼範例會說明:

  • 如何查詢和掃描 DynamoDB 資料表中的項目。

使用案例

查詢只使用主索引鍵屬性值在資料表或次要索引中尋找項目。您必須提供要搜尋的分區索引鍵名稱與值。您也可以提供排序索引鍵名稱和值,並使用比較運算子縮小搜尋結果。掃描會透過檢查指定資料表中的每個項目來尋找項目。

在此範例中,您可以使用一系列 Node.js 模組來識別您要從 DynamoDB 表格擷取的一或多個項目。程式碼會使用 SDK JavaScript 來查詢和掃描使用 DynamoDB 用戶端類別的下列方法的資料表:

先決條件任務

若要設定和執行此範例,請先完成這些任務:

查詢資料表

此範例會查詢內含影片系列之相關集資訊的表格,會為超過 9 集且子標題中含有指定片語的第二季集傳回集標題和子標題。

以檔名 ddb_query.js 建立一個 Node.js 模組。請務必依前述的內容來設定軟體開發套件。若要存取 DynamoDB,請建立AWS.DynamoDB服務物件。建立 JSON 物件,其包含查詢資料表所需的參數,在此範例中包括資料表名稱、查詢所需的 ExpressionAttributeValues、使用這些值來定義查詢要傳回之項目的 KeyConditionExpression 以及要為每個項目傳回的屬性值名稱。呼叫 DynamoDB 服務物件的query方法。

// Load the AWS SDK for Node.js var AWS = require("aws-sdk"); // Set the region AWS.config.update({ region: "REGION" }); // Create DynamoDB service object var ddb = new AWS.DynamoDB({ apiVersion: "2012-08-10" }); var params = { ExpressionAttributeValues: { ":s": { N: "2" }, ":e": { N: "09" }, ":topic": { S: "PHRASE" }, }, KeyConditionExpression: "Season = :s and Episode > :e", ProjectionExpression: "Episode, Title, Subtitle", FilterExpression: "contains (Subtitle, :topic)", TableName: "EPISODES_TABLE", }; ddb.query(params, function (err, data) { if (err) { console.log("Error", err); } else { //console.log("Success", data.Items); data.Items.forEach(function (element, index, array) { console.log(element.Title.S + " (" + element.Subtitle.S + ")"); }); } });

若要執行範例,請在命令列中輸入以下內容。

node ddb_query.js

您可以在這裡找到此範例程式碼 GitHub。

掃描資料表

以檔名 ddb_scan.js 建立一個 Node.js 模組。請務必依前述的內容來設定軟體開發套件。若要存取 DynamoDB,請建立AWS.DynamoDB服務物件。建立 JSON 物件,其包含掃描資料表項目所需的參數,在此範例中包括資料表名稱、要為每個相符項目傳回的屬性值清單,以及要篩選結果組以尋找內含指定片語的表達式。呼叫 DynamoDB 服務物件的scan方法。

// Load the AWS SDK for Node.js. var AWS = require("aws-sdk"); // Set the AWS Region. AWS.config.update({ region: "REGION" }); // Create DynamoDB service object. var ddb = new AWS.DynamoDB({ apiVersion: "2012-08-10" }); 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 are the attributes that you want. ProjectionExpression: "Season, Episode, Title, Subtitle", TableName: "EPISODES_TABLE", }; ddb.scan(params, function (err, data) { if (err) { console.log("Error", err); } else { console.log("Success", data); data.Items.forEach(function (element, index, array) { console.log( "printing", element.Title.S + " (" + element.Subtitle.S + ")" ); }); } });

若要執行範例,請在命令列中輸入以下內容。

node ddb_scan.js

您可以在這裡找到此範例程式碼 GitHub。