Skip to content

Instantly share code, notes, and snippets.

@deepanprabhu
Created October 30, 2017 23:23
Show Gist options
  • Save deepanprabhu/fbb406c3432c19eafe78a4b44e6a4b23 to your computer and use it in GitHub Desktop.
Save deepanprabhu/fbb406c3432c19eafe78a4b44e6a4b23 to your computer and use it in GitHub Desktop.
Concise Recursive DynamoDB Scan - Large Table - Using ExclusiveStartKey and LastEvaluatedKey - NodeJS
let params = {
TableName: 'xxx',
Limit: 50 // Configure based on needs
};
let aItems = [];
const recursiveScan = (params) => {
return client.scan(params).promise().then((data) => {
// Simple Changes to input, optional
let newItems = data.Items.map((item) => {
return item;
});
aItems = aItems.concat(newItems);
if(data.LastEvaluatedKey != null){
params.ExclusiveStartKey = data.LastEvaluatedKey;
// Recursive call, as deep as we can loop !
return recursiveScan(params);
}
return Promise.resolve(aItems);
}).then((items) => {
if(items != null && items.length != null)
console.log("Final List : " + items.length);
}).catch((error) => {
console.log(error);
console.log(JSON.stringify(error));
});
};
@deepanprabhu
Copy link
Author

Thanks @nelsonic

@nelsonic
Copy link

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment