티스토리 뷰

이 페이지는 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');

}

});


댓글
최근에 올라온 글
«   2024/11   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
Total
Today
Yesterday