티스토리 뷰

node에서 aws-sdk 사용 할 때 async / await 를 사용하려면 어떻게 해야 할까

예를 들어 DynamoDB의 Document Client 에서 update 를 하려고 하면 해당 부분 소스는 아래와 같다

  update: function(params, callback) {
    var operation = this.serviceClientOperationsMap['update'];
    return this.makeServiceRequest(operation, params, callback);
  },

여기 있는 makeServiceRequest는 무엇일까?

따라가 보면 꽤 흥미진진하다. 중요한 것은 request.d.ts에 있는 class Request를 리턴한다는 것이다.

그리고 해당 클래스의 메소드를 살펴보면 아래와 같은 메소드가 있다.

promise(): Promise<PromiseResult<D, E>>

오오 딱 봐도 Promise의 Resolve와 Reject를 리턴할 것 같이 생겼다.

즉 위의 경우에서 DDB Client의 update 메소드에서 Promise를 사용하고 싶다면 아래처럼 하면 된다.

var dynamodb = new AWS.DynamoDB.DocumentClient({region: region});
const data = await dynamodb.update(queryParams).promise();

예전에 Lambda 코드에서 DDB Client를 사용해서 CRUD 코드를 짠적이 있었는데 자꾸 리턴값에 null이 들어온적이 있다. 바로 Promise 때문이었던 것 같다.

결론 : 결국 AWS에 Request하는 메소드는 Request를 리턴하니.. Promise를 잘 쓰자

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
«   2024/03   »
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
31
글 보관함