1

我正在尝试对 AWS AppSync 运行查询以获取我在 DynamonDB 中获得大约 50 个项目的所有 Todos 列表,但结果仅在我的 Web 中返回 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"
        },
4

1 回答 1

3

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

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

将此限制更改为 20 以外的值,或者如果您不希望结果受到限制,则将其设置得非常高。(注意:一旦您的结果集达到 1 MB,DynamoDB 将自动分页。)但是,为 Scan 操作设置某种合理的限制通常是一个好习惯,因为 Scan 操作可能会消耗表的预置读取容量的 100%并限制对您的表的其他请求。随着表的大小增加,这一点尤其重要,但对于 50 条记录,这应该不是问题。

于 2019-03-12T02:08:20.680 回答