티스토리 뷰
[Node.js] AWS DynamoDB - Create, Read, Update, Delete (CRUD)
sohyun_ 2019. 2. 17. 16:29이 페이지는 Node.js 프로젝트에 Amazon AWS DynamoDB를 연결하여 CRUD를 작업하는 방법을 설명하고 있다.
DynamoDB와 연결하여 화면출력하는 내용은 지난 포스트를 참고한다.
참고) https://kkumalog.tistory.com/50
# Movies 테이블 데이터 예시
{
'year': '2013',
'title': 'Turn It Down, Or Else!',
'info': {
'directors': [
'Alice Smith',
'Bob Jones'
],
'release_date': '2013-01-18T00:00:00Z',
'rating': 6.2,
'genres': [
'Comedy',
'Drama'
],
'image_url; : 'http://ia.media-imdb.com/images/N/O9ERWAU7FS797AJ7LU8HN09AMUP908RLlo5JF90EWR7LJKQ7@@._V1_SX400_.jpg',
'plot' : 'A rock band plays their music at high volumes, annoying the neighbors.',
'rank' : 11,
'running_time_secs': 5215,
'actors': [
'David Matthewman',
'Ann Thomas',
'Jonathan G. Neff'
]
}
}
다음 링크에서 샘플 데이터 파일을 다운받을 수 있다.
https://docs.aws.amazon.com/ko_kr/amazondynamodb/latest/developerguide/GettingStarted.NodeJs.02.html
# Create Item (항목 생성)
항목을 생성할 때에는 반드시 기본 키가 필요하다.
다음 예제에서는 기본 키(year, title) 및 영화에 대한 자세한 정보를 가진 info속성을 추가하는 코드를 나타내고 있다.
const AWS = require('aws-sdk');
// TODO region, accessKeyId, secretAccessKey 입력필요
AWS.config.update({
region: region,
accessKeyId: accessKeyId,
secretAccessKey: secretAccessKey
});
const docClient = new AWS.DynamoDB.DocumentClient();
const params = {
TableName: 'Movies',
Item: {
'year': 2015,
'title', 'The Big New Movie',
'info': {
'plot': 'Nothing happens at all',
'rating': 0
}
}
};
docClient.put(params, function(err, data) {
if (err) {
console.error(err);
} else {
console.log('Add item');
}
});
# Read Item (항목 읽기)
다음 예제에서는 위에서 생성한 항목을 읽어오는 코드를 나타내고 있다.
get 메서드를 사용하는데, 키 값을 지정해야 Movies 테이블에서 항목을 읽어올 수 있다.
const AWS = require('aws-sdk');
AWS.config.update({
region: region,
accessKeyId: accessKeyId,
secretAccessKey: secretAccessKey
});
const docClient = new AWS.DynamoDB.DocumentClient();
const params = {
TableName: 'Movies',
Key: {
'year': 2015,
'title': 'The Big New Movie'
}
};
docClient.get(params, function(err, data) {
if (err) {
console.error(err);
} else {
console.log('Get Item');
}
});
# Update Item (항목 업데이트)
기존 속성의 값을 업데이트하거나 새로운 속성을 추가하거나 속성을 제거할 수 있다.
다음 예제에서는 기존 속성 info의 plot, rating을 수정하고, 새로운 actors 항목을 추가하는 코드를 나타내고 있다.
ReturnValues 파라미터는 DynamoDB에게 업데이트된 속성만 반환하도록 지시한다.
const AWS = require('aws-sdk');
AWS.config.update({
region: region,
accessKeyId: accessKeyId,
secretAccessKey: secretAccessKey
});
const docClient = new AWS.DynamoDB.DocumentClient();
const params = {
TableName: 'Movies',
Key: {
'year': 2015,
'title': 'The Big New Movie'
},
UpdateExpression: 'set info.rating = :r, info.plot=:p, info.actors=:a',
ExpressionAttributeValues: {
':r': 5.5,
':p': 'Everything happens all at once',
':a': ['Larry', 'Moe', 'Curly']
},
ReturnValues: 'UPDATED_NEW'
};
docClient.update(params, function(err, data) {
if (err) {
console.error(err);
} else {
console.log('Update Item');
}
});
조건에 맞는 항목만 업데이트를 하고 싶을 땐, ConditionExpression 파라미터를 추가한다.
ConditionExpression: 'size(info.actors) > :num',
# Delete Item (항목 삭제)
delete메서드를 사용해 기본 키를 지정함으로써 항목 1개를 삭제할 수 있다.
수정과 마찬가지로 조건을 만족하는 경우만 선택하려면 ConditionExpression 옵션을 선택할 수 있다.
다음 예제에서는 평점이 5 이하인 경우 특정 영화 항목을 삭제하는 코드를 나타내고 있다.
const AWS = require('aws-sdk');
AWS.config.update({
region: region,
accessKeyId: accessKeyId,
secretAccessKey: secretAccessKey
});
const docClient = new AWS.DynamoDB.DocumentClient();
const params = {
TableName: 'Movies',
Key: {
'year: 2015,
'title': 'The Big New Movie'
},
ConditionExpression: 'info.rating <= :val',
ExpressionAttributeValues: {
':val': 5.0
}
};
docClient.delete(params, function(err, data) {
if (err) {
console.error(err);
} else {
console.log('Delete Item');
}
});
'Programming > Node.js' 카테고리의 다른 글
[Node.js] Using multer to upload image (0) | 2019.04.06 |
---|---|
[Node.js] Getting Metrics from Amazon AWS CloudWatch (0) | 2019.03.30 |
[Node.js] Login Authentication With Passport (0) | 2019.02.02 |
[Node.js] Connecting to Amazon AWS DynamoDB (0) | 2019.01.30 |
[Node.js] Create Node.js Project in IntelliJ IDEA(2) (0) | 2019.01.28 |