AWS DynamoDB Lambda Scan с ключом - PullRequest
       2

AWS DynamoDB Lambda Scan с ключом

0 голосов
/ 04 декабря 2018

Я сейчас делаю лямбда-сканирование, где мне нужно отсканировать таблицу, размер которой в настоящее время превышает 1 МБ (ограничение размера одного сканирования).Однако, мой текущий опыт не позволяет мне переписать код для повторяющихся действий.Это текущий вызов:

 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 }));
}

Таким образом, он срабатывает два раза, но должен продолжаться до тех пор, пока последний ключ не будет определен.Любая помощь приветствуется!

Привет Брэм

1 Ответ

0 голосов
/ 04 декабря 2018

Создать рекурсивную функцию , которая остановится, когда 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)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...