1
dynamodb.scan()から約束を受け取ります。レスポンスにLastEvaluatedKeyが含まれていると約束が解決されると、dynamodb.scan()を再度呼び出さなければなりません。レスポンスにLastEvaluatedKeyオブジェクトが含まれていない場合は、テーブルのすべてのレコードがスキャンされ、クエリが完了します。私は事前に必要なscan()呼び出しの回数を知らない。私はこれをコード化する方法を知らない。これは今私が持っているものです:dynamodbスキャンを複数回呼び出して約束を使用する方法
function scan(options, startKey) {
var parms = {
TableName: options.source,
ProjectionExpression: "book, bid, #kee, #unt, pid, #txt",
FilterExpression: "contains(#txt, :v_qs)",
ExpressionAttributeNames: {
"#unt": "unit",
"#txt": "text",
"#kee": "key"
},
ExpressionAttributeValues: {
":v_qs": options.queryTransformed
}
};
if (startKey) {
parms.ExclusiveStartKey = startKey;
}
return dynamoDb.scan(parms).promise();
}
scan(options).then(function(response) {
if (response.LastEvaluatedKey) {
searchResults.push(response);
return scan(options, response.LastEvaluatedkey);
}
else {
return response
}
}).then(function(response) {
if (response.LastEvaluatedKey) {
searchResults.push(response);
return scan(options, response.LastEvaluatedKey);
}
else {
return response;
}
}).then(function(response) {
//this is crazy - bailing even if another call is needed
searchResults.push(response);
return generateSearchResponse();
});
これは明らかにそれを行う方法ではありません。このコードは、AWSラムダノード関数の一部です。あなたの助けを前にありがとう。