곧 AWS SDK for JavaScript(v2)에 대한 지원이 종료될 예정임을 알려드립니다
DynamoDB 테이블 쿼리 및 스캔
이 Node.js 코드 예제는 다음을 보여 줍니다.
DynamoDB 테이블에서 항목을 쿼리하고 스캔하는 방법
시나리오
쿼리는 기본 키 속성 값만 사용하여 테이블 또는 보조 인덱스에서 항목을 찾습니다. 검색할 파티션 키 이름과 값을 제공해야 합니다. 정렬 키 이름과 값도 제공할 수 있으며, 비교 연산자를 사용하여 검색 결과를 좁힐 수 있습니다. 스캔은 지정된 테이블에서 모든 항목을 확인하여 항목을 찾습니다.
이 예에서는 일련의 Node.js 모듈을 사용하여 DynamoDB 테이블에서 검색하려는 항목을 하나 이상 식별합니다. 이 코드는 SDK for JavaScript에서 DynamoDB 클라이언트 클래스의 다음 메서드를 사용하여 테이블을 쿼리하고 스캔합니다.
사전 필수 작업
이 예제를 설정하고 실행하려면 먼저 다음 작업을 완료합니다.
Node.js를 설치합니다. 자세한 내용은 Node.js
웹 사이트를 참조하세요. 사용자 자격 증명을 사용하여 공유 구성 파일을 생성합니다. 공유 자격 증명 파일 제공에 대한 자세한 내용은 공유 인증 자격 증명 파일에서 Node.js에 인증 자격 증명 로드 섹션을 참조하세요.
액세스할 수 있는 항목이 포함된 DynamoDB 테이블을 생성합니다. DynamoDB 테이블 생성에 관한 자세한 내용은 DynamoDB에서 테이블 생성 및 사용 섹션을 참조하세요.
테이블 쿼리
이 예제에서는 비디오 시리즈에 대한 에피소드 정보가 포함된 테이블을 쿼리하여 지정된 어구가 자막에 포함되어 있는 에피소드 9 이후 두 번째 시즌 에피소드의 에피소드 제목과 자막을 반환합니다.
파일 이름이 ddb_query.js
인 Node.js 모듈을 생성합니다. 위와 같이 SDK를 구성해야 합니다. 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 모듈을 생성합니다. 위와 같이 SDK를 구성해야 합니다. 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