2017-11-06 4 views
-1
const params = { 
    TableName: 'item-table', 
    FilterExpression : "#tagname = :itemId", 
    ExpressionAttributeNames: {"#tagname": "itemId"}, 
    ExpressionAttributeValues: {":itemId": "000001"}  
    }; 
var item =""; 
dynamo.scan(params, function(err, data) 
{ 
if (err) { 
    console.error("Unable to query. Error:", JSON.stringify(err, null, 2)); 
    item = err; 
    } else { 
     console.log("Query succeeded."); 
     data.Items.forEach(function(item) { 
      item += item.itemName; 
     }); 
     } 
     return item; 
}); 

출력을 반환하지만 다음 단계로 진행할 때까지 기다리는 중입니다. 어떻게 우리는 람다에서 dynamodb에 동기식 호출을 실행할 수 있습니다.람다에서 동기식 Dynamodb 요청을 어떻게 수행 할 수 있습니까?

+0

왜 동기 호출을 원합니까? aws lex는 비동기 호출을 지원하지 않기 때문에 – Kannaiyan

+0

입니다. – Vikash

+2

'return item'에서 반환 할 콜백을 추가하십시오. 예를 확인하십시오. http://docs.aws.amazon.com/lex/latest/dg/lambda-input-response-format.html – Kannaiyan

답변

0

동기식으로 실행할 필요가 없습니다. 이는 좋은 생각이 아닙니다. 당신은 다음과 같은 코드를 리팩토링 할 수 검사에서 콜백을 말고 당신이 콜백을 받고있는 장소에서 다른 모든 로직을 수행

const params = { 
 
    TableName: 'item-table', 
 
    FilterExpression : "#tagname = :itemId", 
 
    ExpressionAttributeNames: {"#tagname": "itemId"}, 
 
    ExpressionAttributeValues: {":itemId": "000001"}  
 
    }; 
 
var item =""; 
 
dynamo.scan(params, function(err, data) 
 
{ 
 
    callback(err,data); 
 
});
예를 들어

scanDynamoDB(function(err,data){ 
 
    if (err) { 
 
     console.error("Unable to query. Error:", JSON.stringify(err, null, 2)); 
 
     item = err; 
 
     } else { 
 
      console.log("Query succeeded."); 
 
      data.Items.forEach(function(item) { 
 
       item += item.itemName; 
 
      }); 
 
     } 
 
}) 
 

 

 

 
function scanDynamoDB(callback) 
 
{ 
 
    const params = { 
 
     TableName: 'item-table', 
 
     FilterExpression : "#tagname = :itemId", 
 
     ExpressionAttributeNames: {"#tagname": "itemId"}, 
 
     ExpressionAttributeValues: {":itemId": "000001"}  
 
      }; 
 
     var item =""; 
 
     dynamo.scan(params, function(err, data) 
 
     { 
 
      callback(err,data); 
 
     }); 
 
}

+0

이 호출은 여전히 ​​dynamo.scan 함수를 전달하고 dynamo.scan이 완료 될 때까지 기다리지 않습니다. – Vikash

관련 문제