How to fetch/scan all items from `AWS dynamodb` using node.js

前端 未结 11 2852
清酒与你
清酒与你 2020-11-30 00:19

How to fetch/scan all items from AWS dynamodb using node.js. I am posting my code here.

var docClient = new aws.DynamoDB.DocumentCl         


        
11条回答
  •  半阙折子戏
    2020-11-30 01:02

    For those who are NOT USING AWS.DynamoDB.DocumentClient, this solution will work. I have split the functionality into multiple modules for easy readability and using async/await.

    const AWS = require("aws-sdk");
    AWS.config.update({
        // update table region here
        region: "us-west-2"
    });
    var dynamodb = new AWS.DynamoDB();
    const performAsynScanOperation = (scanParams) => {
        return new Promise((resolve, reject) => {
            dynamodb.scan(scanParams, function (err, responseData) {
                if (err) {
                    reject(err)
                } else {
                    resolve(responseData)
                }
            })
        })
    }
    
    const getAllRecords = async (tableName) => {
        let allItems = [];
        let LastEvaluatedKeyFlag = true;
        let scanParams = { TableName: tableName }
        while (LastEvaluatedKeyFlag) {
            let responseData = await performAsynScanOperation(scanParams)
            let batchItems = responseData.Items;
            allItems = allItems.concat(batchItems);
            if (responseData.LastEvaluatedKey) {
                LastEvaluatedKeyFlag = true;
                console.log('LastEvaluatedKey', responseData.LastEvaluatedKey)
                scanParams.ExclusiveStartKey = responseData.LastEvaluatedKey
            } else {
                LastEvaluatedKeyFlag = false;
            }
        }
        return allItems;
    }
    getAllRecords('').then((allItems)=>{
      console.log(allItems)
    })
    

提交回复
热议问题