Abfragen einer DynamoDB-Tabelle - AWS SDK for JavaScript

DieAWS SDK for JavaScriptV3-API-Referenzhandbuchbeschreibt detailliert alle API-Operationen fürAWS SDK for JavaScriptVersion 3 (V3).

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Abfragen einer DynamoDB-Tabelle

JavaScript code example that applies to Node.js execution

Dieses Node.js-Codebeispiel zeigt:

  • So fragen Sie eine DynamoDB-Tabelle ab und scannen sie nach Elementen.

Das Szenario

Die Abfrage findet Elemente in einer Tabelle oder einem Sekundärindex nur über Primärschlüsselattributwerte. Sie müssen einen Partitionsschlüsselnamen und einen Wert angeben, nach dem gesucht werden soll. Sie können auch einen Sortierschlüsselnamen und Wert angeben, und einen Vergleichsoperator verwenden, um die Suchergebnisse zu verfeinern. Das Scannen findet Elemente, indem jedes Element in der angegebenen Tabelle überprüft wird.

In diesem Beispiel verwenden Sie eine Reihe von Modulen von Node.js zur Identifizierung eines oder mehrerer Elemente, die Sie aus einer DynamoDB-Tabelle abrufen möchten. Der Code verwendet das SDK für JavaScript zum Abfragen und Scannen von Tabellen unter Verwendung dieser Methoden der DynamoDB-Client-Klasse:

Erforderliche Aufgaben

Zum Einrichten und Ausführen dieses Beispiels schließen Sie zunächst diese Aufgaben ab:

Wichtig

In diesen Beispielen wird ECMAScript6 (ES6) verwendet. Dies erfordert Node.js Version 13.x oder höher. Informationen zum Herunterladen der neuesten Version von Node.js finden Sie unterNode.jsaus.

Wenn Sie jedoch die CommonJS-Syntax bevorzugen, lesen Sie bitteJavaScript ES6/CommonJS-Syntax

Anmerkung

Weitere Informationen über die in diesen Beispielen verwendeten Datentypen finden Sie unterUnterstützte Datentypen und Benennungsregeln in Amazon DynamoDBaus.

Abfragen einer Tabelle

In diesem Beispiel wird eine Tabelle abgefragt, die Informationen zu Episoden einer Videoserie enthält, und die Episodentitel und -untertitel von Episoden der zweiten Staffel nach Episode 9 zurückgegeben, die einen angegebene Begriff im Untertitel enthalten.

Erstellen eineslibsund erstellen Sie ein Modul Node.js mit dem DateinamenddbClient.jsaus. Kopieren Sie den unten stehenden Code und fügen Sie ihn ein, wodurch das DynamoDB-Clientobjekt erstellt wird. ErsetzenREGIONmitAWSRegion.

// 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 };

Dieser Code ist verfügbarhier GitHubaus.

Erstellen Sie ein Node.js-Modul mit dem Dateinamen ddb_query.js. Stellen Sie sicher, dass Sie das SDK, wie zuvor dargestellt konfigurieren, einschließlich des Herunterladens der erforderlichen Clients und Pakete. Um auf DynamoDB zuzugreifen, erstellen Sie eineDynamoDBclient servicec-Objekt. Erstellen Sie ein JSON-Objekt mit den erforderlichen Parametern für das Abfragen der Tabelle, das in diesem Beispiel den Tabellennamen, die von der Abfrage benötigten ExpressionAttributeValues, einen KeyConditionExpression, der diese Werte verwendet, um zu definieren, welche Elemente die Abfrage zurück gibt, und die Namen der für jedes Element zurückzugebenden Attributwerte beinhaltet. Aufrufen Sie dieQueryCommand-Methode des DynamoDB--Serviceobjekts.

Der Primärschlüssel für die Tabelle besteht aus den folgenden Attributen:

  • Season

  • Episode

Sie können den Code ausführenhier GitHubum die Tabelle zu erstellen, auf die diese Abfrage abzielt, und den Codehier GitHubum die Tabelle zu füllen.

// 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();

Geben Sie zum Ausführen des Beispiels Folgendes ein.

node ddb_query.js

Diesen Beispielcode finden Siehier GitHubaus.

Scannen einer Tabelle

Erstellen eineslibsund erstellen Sie ein Modul Node.js mit dem DateinamenddbClient.jsaus. Kopieren Sie den unten stehenden Code und fügen Sie ihn ein, wodurch das DynamoDB-Clientobjekt erstellt wird. ErsetzenREGIONmitAWSRegion.

// 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 };

Dieser Code ist verfügbarhier GitHubaus.

Erstellen Sie ein Node.js-Modul mit dem Dateinamen ddb_scan.js. Stellen Sie sicher, dass Sie das SDK, wie zuvor dargestellt konfigurieren, einschließlich des Herunterladens der erforderlichen Clients und Pakete. Um auf DynamoDB zuzugreifen, erstellen Sie eineDynamoDB client service object. Erstellen Sie ein JSON-Objekt mit den erforderlichen Parametern für das Scannen der Tabelle nach Elementen, das in diesem Beispiel den Namen der Tabelle, die Liste der Attributwerte, die für jedes übereinstimmende Element zurückgegeben werden sollen, und einen Ausdruck zum Filtern des Ergebnissatzes beinhaltet, um nach Elementen mit einem bestimmten Begriff zu suchen. Aufrufen Sie dieScanQuery-Methode des DynamoDB--Serviceobjekts.

// 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();

Geben Sie zum Ausführen des Beispiels Folgendes ein.

node ddb_scan.js

Diesen Beispielcode finden Siehier GitHubaus.