0
私はテーブル上でクエリを実行し、ループ内の別のテーブルをクエリする必要があります。しかし、私はノードjsモジュールを同期しようとしました。しかし、いつかapiはこのメソッドでタイムアウトエラーで終了します。今私は下の方法でコードを試していますが、運はありません。awsラムダ非同期と同期の問題
var notification = {
TableName: "Tablename",
KeyConditionExpression:"#userId =:userid and #datetime <=:datetime",
ScanIndexForward: false,
ExpressionAttributeNames: {
"#userId": "userId",
"#datetime":"datetime"
},
ExpressionAttributeValues: {
":userid" :userId,
":datetime" :datetime
}
};
docClient.query(notification, function(err, result) {
if (err) {
context.succeed({success: false, message : JSON.stringify(err, null, 2),method:"notification",type:type});
}else{
result = result.Items;
if (result.length>0) {
for(var i=0;i<result.length;i++){
result[k]['CafeDetail']=getDetail(result[k].CafeID,function (data) {
});
if (k ==(result.length -1)) {
context.succeed({success: true,data:result, message : "Notification list",method:"notification",type:type});
}
}
}
}
});
function getDetail(CafeID,callback) {
var param = {
TableName: "Tablename",
ProjectionExpression:"CafeName,Cafe_MainImage",
KeyConditionExpression:"CafeID =:cafeID",
ExpressionAttributeValues: {
":cafeID" :CafeID
}
};
docClient.query(param, function(err, CafeDetail) {
if (err) {
console.log (err)
callback(err);
} else {
callback(CafeDetail.Items);
console.log(CafeDetail.Items);
}
});
}
出力時に、この変数(result [k] ['CafeDetail'])は常に未定義となります。しかし、getDetail関数内のconsole.logは結果を出力します。
私はノードjsでawsラムダに初心者です。どんな助けもありがとうございます。
ありがとうございました