AWS AppSync GraphQL API возвращает только 20 элементов из DynamoDB - PullRequest
0 голосов
/ 12 марта 2019

Я пытаюсь выполнить запросы к AWS AppSync, чтобы получить весь список Todos, в которых я получил около 50 элементов в DynamonDB, но результат возвращает только 20 элементов в моем вебе, есть ли ограничения для AppSync?

Я использовал библиотеку амплификации для выполнения запроса:

API.graphql(
        graphqlOperation(queries.listTodos)
    )

Как я могу получить все 50 предметов из моего DynamoDB?

Запрос:

export const listTodos = `query ListTodos(
  $filter: TableTodoFilterInput
  $limit: Int
  $nextToken: String
) {
  listTodos(filter: $filter, limit: $limit, nextToken: $nextToken) {
    items {
      id
      dateIn
      dateOut
      reservedBy
      status
      ttl
      createdON
    }
    nextToken
  }
}
`;

Пример данных:

"items": [
        {
          "id": "ad2ce180-eae4-4bbd-abbc-00375e2dabd9",
          "dateIn": "2019-03-13",
          "dateOut": "2019-03-16",
          "reservedBy": "Harith",
          "status": "Pending Payment",
          "ttl": 1552357596,
          "createdON": "2019-03-11T02:26:36.608Z"
        },

1 Ответ

0 голосов
/ 12 марта 2019

В шаблоне сопоставления запросов вашего listTodos, вероятно, есть следующая строка:

"limit": $util.defaultIfNull(${ctx.args.limit}, 20), 

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

...