AWS AppSync GraphQL API 只有 return 来自 DynamoDB 的 20 个项目

AWS AppSync GraphQL API only return 20 items from DynamoDB

我尝试 运行 查询 AWS AppSync 以获取所有待办事项列表,我在 DynamonDB 中获得了大约 50 项,但结果只有 return 我的网站中有 20 项,是吗AppSync 有任何限制吗?

我使用放大库来 运行 查询:

API.graphql(
        graphqlOperation(queries.listTodos)
    )

如何从我的 dynamoDB 中获取所有 50 个项目?

查询:

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"
        },

在您的 listTodos 解析器的请求映射模板中可能有以下行:

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

将此限制更改为 20 以外的值,或者如果您不希望结果受到限制,可以将其设置得非常高。 (注意:一旦您的结果集达到 1 MB,DynamoDB 将自动分页。)然而,为扫描操作设置某种合理的限制通常是一个好习惯,因为扫描操作可以消耗 100% 的预配置读取容量 table 和 throttle other requests to your table。随着 table 规模的增长,这一点尤其重要,但对于 50 条记录,这应该不是问题。