Сканирование DynamoDB показывает меньше элементов, чем консоль DynamoDB - PullRequest
0 голосов
/ 07 мая 2019

Почему сканирование с помощью nodejs показывает только 3 результата, в то время как инструмент администрирования DynamodB показывает 9

var params = {
    TableName: process.env.DYNAMODB_TABLE_LIGHTHOUSE,
    FilterExpression: '#blickArticleId = :valblickArticleId AND #firstFolder = :valfirstFolder',
    ExpressionAttributeNames: {
        '#blickArticleId': 'blickArticleId',
        '#firstFolder': 'firstFolder'
    },
    ExpressionAttributeValues: {
        ':valblickArticleId': 'null',
        ':valfirstFolder': 'null'
    },
  };

  const queryResponse = await dynamoDb.scan(params).promise()

не то же самое

enter image description here

Ответы [ 3 ]

2 голосов
/ 08 мая 2019

Вы уверены, что ваш отсканированный контент не превышает 1 МБ?.

Если общее количество отсканированных документов превышает максимальный размер набора данных ограничение в 1 МБ, сканирование останавливается и результаты возвращаются пользователю с ключом LastEvaluated

Затем вы можете отсканировать оставшиеся элементы, используя LastEvaluatedKey.

1 голос
/ 07 мая 2019

Ваш код должен сканировать оставшиеся элементы. Наличие ненулевого LastEvaluatedKey указывает на то, что результаты DynamoDB разбиты на страницы. Предполагается, что консоль AWS DynamoDB выполняет нумерацию страниц.

Вот пример кода для извлечения всех элементов, если разбит на страницы .

0 голосов
/ 07 мая 2019

как упомянул джармод, нумерация страниц - это:

const getLalalalalal = async () => {
  var params = {
    TableName: process.env.DYNAMODB_TABLE_LIGHTHOUSE,
    FilterExpression: '#blickArticleId = :valblickArticleId AND #firstFolder = :valfirstFolder',
    ExpressionAttributeNames: {
        '#blickArticleId': 'blickArticleId',
        '#firstFolder': 'firstFolder'
    },
    ExpressionAttributeValues: {
        ':valblickArticleId': 'null',
        ':valfirstFolder': 'null'
    },
  };

  return await scanTable(params)
}

const scanTable = async (params) => {
  let scanResults = [];
  let items;
  do {
      items = await dynamoDb.scan(params).promise();
      items.Items.forEach((item) => scanResults.push(item));
      params.ExclusiveStartKey = items.LastEvaluatedKey;
  } while(typeof items.LastEvaluatedKey != "undefined");

  return scanResults;
};
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...