В каких случаях AppSync не возвращает все соответствующие записи / элементы из таблицы DynamoDB? - PullRequest
2 голосов
/ 11 июня 2019

Мы видим странное поведение, при котором не все элементы возвращаются в запросе AppSync.В таблице базы данных 31 элемент, но следующий запрос возвращает только 10 элементов?

query listAllDocuments {
        listDocuments {
          items{
            userId
          }
      }
  }

Это простой распознаватель DynamoDB:

{
    "version" : "2017-02-28",
    "operation" : "Scan",
    "filter": #if($ctx.args.filter) $util.transform.toDynamoDBFilterExpression($ctx.args.filter) #else null #end,
}

Другие запросы (использующие фильтр) также возвращают некоторое подмножество фактических соответствующих документов.

Ответы [ 2 ]

1 голос
/ 11 июня 2019

Не уверен, что вы вставили весь код распознавателя.Если вы используете автоматически сгенерированный listX resolver, он по умолчанию возвращает 10 элементов.Попробуйте

query listAllDocuments {
        listDocuments(limit: 100) { // anything larger than 31
          items{
            userId
          }
      }
  }

И вы получите все 31. Более подробную информацию вы найдете в теме github

0 голосов
/ 24 июня 2019

Существует ограничение по умолчанию 10 при использовании сканирования, чтобы предотвратить просмотр таблицы. В своем шаблоне сопоставления VTL укажите более высокий лимит, чтобы получить все элементы. См. https://docs.aws.amazon.com/appsync/latest/devguide/resolver-mapping-template-reference-dynamodb.html#aws-appsync-resolver-mapping-template-reference-dynamodb-scan, чтобы указать этот предел. Вы можете установить предел так высоко, как вы хотите; DynamoDB остановится, как только достигнет общего количества элементов в таблице или предела, в зависимости от того, что меньше.

...