我需要扩展@connection 响应中的 10 项限制

I need to extend the 10 item limit in @connection responses

在 AWS Amplify+ Appsync 中,使用@connection 在 table 之间生成连接非常容易。下面是一个简单的例子 Task table 和相关的 Comments

type Task @model{
    id: ID!
    createdAt: String
    name: String
    comments: [Comments] @connection(name:"TaskComments", sortField: "createdAt")
    status: String
}

type Comments @model{
    id: ID!
    createdAt: String
    task: Task @connection(name:"TaskComments", sortField: "createdAt")
    taskId: String
}

它甚至会为您自动生成架构:

type Task {
  id: ID!
  createdAt: String
  name: String
  comments(limit: Int, nextToken: String): ModelCommentsConnection
  Status: String
}


type Query {
    ///... other not-related queries omitted
  getTask(id: ID!): Task

}

问题是查询只有 returns 10 项 (Comments) 即使我有更多。 (我可以在响应中看到 nextToken,但这是另一回事)。我希望每次初始加载能够 return 20、30 或更多条评论。

我试图传递 limit:1000,但查询忽略了它。

graphql(
    gql(getTask),
    {
      options: ({match: {params: {id}}}) => ({
        variables: {id, limit:1000},
        fetchPolicy: 'cache-and-network',
      }),
      props: ({data: {getTask: task, loading}}) => ({
        task,
        loading,
      }),
    },
   ),

这是一个与以下问题非常相似的问题:

但就我而言,我使用的是 React + AWS Amplify。

非常感谢。

Amplify 为您生成的代码是一个起点。它可能需要一些有限的编辑。

如果你到了 src/graphql/queries.js,你看到像这样的东西了吗?

query GetTasks(id:ID!, limit:Int) {
    getTask(input: {id: $id}) {
      id
      createdAt
      name
      comments(limit: $limit) {
        items {
          id
        }
      }
      status
    }
}

如果您在此查询定义中没有看到限制,您可能需要添加它。 (PS - 我不是 100% 确定我上面使用的语法,但希望这能为你指明正确的方向。)

刚刚测试了以下代码,它似乎运行良好: 即可以添加 ${nextToken} 以便能够迭代超过 1000 个限制。

 query GetTasks(id:ID!, limit:Int) {
     getTask(input: {id: $id}) {
       id
       createdAt
       name
       comments (limit: $limit nextToken: ${nextToken}) {
         items {
           id
         }
       }
       status
     } }