0

나는 일을하는 일반적인 방법은DynamoDB API 노드, 결과를 동기식으로 얻을 수 있습니까? 수,

db.query(params, callback); 

입니다하지만 알고 어떻게 내가 결과를 얻을 전에 내 람다의 나머지 실행할 수없는 경우에 나는

var data = db.query(params); 

처럼 뭔가를 할 수 모든 콜백을하지 않고 그냥 기다려야합니까?

+1

아니, Node.js를 프로그래밍 비동기 코드를 처리하는 방법을 배울 필요 의미합니다. – robertklep

답변

1

Query api에는 동기식 방법이 없습니다. 그러나 Query API에는 Promise을 사용할 수 있습니다.

약속은 비동기 흐름을 관리하기 위해 콜백 기능을 사용할 수있는 대안을 제공합니다. 비동기 호출을 변수로 처리하여 오류 처리를 단순화하고 비동기 호출의 처리 결과를보다 잘 제어 할 수 있습니다. 쿼리 API를 사용하여

AWS SDK support for promise

샘플 코드 : -

var table = "Movies"; 

var year_val = 1992; 
var title = "Movie with list attribute"; 

var params = { 
    TableName: table, 
    KeyConditionExpression: 'yearkey = :hkey and title = :rkey', 
    ExpressionAttributeValues: { 
     ':hkey': year_val, 
     ':rkey': title   
    } 
}; 

var queryObjectPromise = docClient.query(params).promise(); 

queryObjectPromise.then(function (data) { 
    console.log("Query Item succeeded: ", JSON.stringify(data, 
     null, 2)); 
}).catch(function (err) { 
    console.log("Unable to read item. Error JSON: ", JSON.stringify(err, null, 2)); 

}); 
+0

내 POV에서 볼 때, 들여 쓰기가 적어 종류는 같습니다. 그러나 나는 이것을 받아 들일 것이다. – LLL

+0

노드 v7.6에서 async-await을 사용하고 지정한 쿼리 메소드의 약속 된 버전을 기다릴 수 있습니다 (들여 쓰기를 전혀 사용하지 않음) – johni

+0

감사합니다! 좋은 제안. 그러나 노드 v6.10.2 LTS는 대부분의 사용자에게 권장되는 버전입니다. – notionquest

관련 문제