[英]AWS DynamoDB Lambda Scan with key
我目前正在进行lambda扫描,需要扫描当前大于1mb(单次扫描的大小限制)的表。 但是,根据我目前的经验,我无法为重复性操作重写代码。 这是当前调用:
const params = {
TableName: 'product',
};
let items = []
try {
const result = await dynamoDbLib.call("scan", params);
items = result.Items;
if (result.LastEvaluatedKey) {
params.ExclusiveStartKey = result.LastEvaluatedKey;
const newResult = await dynamoDbLib.call("scan", params);
items.concat(newResult.Items)
}
callback(null, success(items));
} catch (e) {
callback(null, failure({ status: false }));
}
因此它会触发两次,但应该继续进行直到未定义最后一个键。 任何帮助将非常感激!
问候布拉姆
创建一个递归函数 ,该LastEvaluatedKey
在未定义LastEvaluatedKey
时将停止。 它将继续收集扫描结果,直到未定义LastEvaluatedKey为止,然后它将返回扫描结果。
async function scanTillEnd(params, items){
const result = await dynamoDbLib.call("scan", params);
items.concat(result.Items)
//check if they are more items to get
if (result.LastEvaluatedKey) {
params.ExclusiveStartKey = result.LastEvaluatedKey;
//scan the table again
return await scanTillEnd(params, items)
}
else
//have scanned till the end, return the results
return items
}
const params = {
TableName: 'product',
};
let items = []
let results = scanTillEnd(params,items)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.