Это потому, что на SCAN operation
DynamoDb будет отправлять только data upto 1mb only
.Если требуемые записи имеют размер более 1 Мб, происходит автоматическое разбиение на страницы.
Если вы зарегистрируете свой Результат, то вы найдете атрибут с именем LastEvaluatedKey
, если этот атрибут присутствует, тогда вам придется сделать еще один вызовполучить оставшиеся данные.Этот вызов должен быть реализован рекурсивно, и вы должны остановить его, когда атрибут LastEvaluatedKey
отсутствует.
Давайте посмотрим на этот пример, когда данные проекта извлекаются рекурсивно, а все данные добавляются в массив, а затемотправить.
let getFromDb = function (params, callback) {
params.ConsistentRead = true;
let projectCollection = [];
dynamodbclient.scan(params, onQuery);
function onQuery(err, data) {
const methodName = 'onQuery';
if (err) {
callback(err);
log.error(err, {
class: className,
func: methodName
});
} else {
for (let i = constant.LENGTH_ZERO; i < data.Items.length; i++) {
projectCollection.push(data.Items[i]);
}
if (typeof data.LastEvaluatedKey !== 'undefined') {
params.ExclusiveStartKey = data.LastEvaluatedKey;
dynamodbclient.scan(params, onQuery);
} else {
callback(err, projectCollection); //recursive call
}
}
}
};