DB의 CRUD 중에서 가장 기본적인 Read를 하기 위해 REST 개념에 매칭되는 GET을 활용한다.
const AWS = require('aws-sdk');
//create DynamoDB Object
const dynamo = new AWS.DynamoDB();
/**
* Provide an event that contains the following keys:
*
* - operation: one of the operations in the switch statement below
* - tableName: required for operations that interact with DynamoDB
* - payload: a parameter to pass to the operation being performed
*/
exports.handler = async (event) => {
//console.log('Received event:', JSON.stringify(event, null, 2));
const operation = event.operation;
switch (operation) {
case 'GET':
return await dynamo.scan (event.body).promise();
default:
throw new Error(`Unrecognized operation "${operation}"`);
}
};
{
"operation": "GET",
"body": {
"TableName": "Confusion",
"FilterExpression": "contains (#names, :atValue)",
"ExpressionAttributeNames": {
"#names": "confusion_name"
},
"ExpressionAttributeValues": {
":atValue": { "S": "s"}
}
}
}
이 코드는
SELECT *
FROM CONFUSION
WHERE CONFUSION_NAME LIKE '%s%';
와 동일한 결과를 반환환다.
operation
index 의 switch의 결정 기준이다.
body - TableName
scan할 테이블 명
body - FilterExpression
조건문을 작성한다. 속성명 앞에는 #, 속성값 앞에는 :을 붙여 구분한다.
body - ExpressionAttributeNames
전달인자의 속성명을 정의한다.
body - ExpressionAttributeValues
전달인자의 속성값을 정의한다. 이때 {타입 : 속성값} 형태로 정의한다.
형태를 작성하지 않고 :atValue : "s" 형태로도 실행이 가능하다
위 코드에서 전달 값 (s)위치에 아무것도 작성하지 않으면 모든 items를 반환한다.
