При использовании DynamoDB в качестве источника данных я показываю общее количество записей в 135 строк выборки данных. Однако когда я выполняю запрос listAll
, я вижу очень случайные данные на экране, ограниченные 20 записями.
Когда я исследовал, добавив аргумент limit
, установленный на 150, я получаю все данные. Если я сохраню ограничение до двух или трех и попытаюсь добавить фильтр для запроса результатов, я не получу любые .
Когда я продолжил проверять шаблон сопоставления запросов, я обнаружил, что значение по умолчанию для лимита передается как двадцать. Следовательно, мы видим двадцать случайных записей.
"limit": $util.defaultIfNull($ctx.args.limit, 20)
Итак, если ваш фильтр содержит сведения о любой из этих двадцати записей, вы получите результат. Если в DynamoDB есть что-нибудь еще, оно не будет возвращено.
Если вы удалите этот атрибут limit из RequestMappingTemplate, вы увидите все данные. Но тогда, когда вы превысите лимит, он не будет учтен, и вы получите все результаты.
Из этого упражнения я вижу, что лимит напрямую связан с чем-то вроде индекса строки.
Причина, по которой я говорю это: предположим, вы выполняете запрос с фильтром и не получаете никаких результатов, но доступен nextToken
. Если вы снова выполните запрос с этим nextToken
с ограничением, скажем, двумя, вы больше не получите никаких результатов, если эти записи, которые вы ищете, не подпадают под двадцать записей, которые извлекает запрос.
Другими словами, сначала создается limit
, и только , затем применяет фильтр.
Я тоже проверил то же самое в DynamoDB, у меня нет таких проблем при фильтрации.
Кто-нибудь может мне с этим помочь? Я читал здесь другие похожие сообщения, но они не касаются сценария, в котором limit
ограничивает пул запросов, а не количество возвращаемых результатов.