You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过AppSync生成的查询获取嵌套数据?

问题描述

我有如下GraphQL Schema:

type Post
  @model {
  id: ID!
  title: String!
  content: String!

  comments: [Comment] @hasMany(indexName: "byPost", fields: ["id"])
}

type Comment
  @model {
  id: ID!
  message: String
  post: Post @belongsTo(fields: ["postID"])
  postID: ID @index(name: "byPost")
}

AppSync自动生成了listPosts查询:

export const listPosts = /* GraphQL */ `
  query ListPosts(
    $filter: ModelPostFilterInput
    $limit: Int
    $nextToken: String
  ) {
    listPosts(filter: $filter, limit: $limit, nextToken: $nextToken) {
      items {
        id
        title
        content
        comments {
          nextToken
        }
        createdAt
        updatedAt
      }
      nextToken
    }
  }
`;

调用代码如下:

const postData = await API.graphql({
      query: listPosts,
    });

数据库中存在与帖子关联的评论,但返回结果仅显示comments: { nextToken: null },无法获取实际评论数据,如何获取嵌套的评论内容?

解决方法

问题根源在于自动生成的查询仅请求了comments的nextToken字段,未指定评论的具体内容字段。需要修改GraphQL查询,明确声明要获取的Comment字段:

修改后的listPosts查询:

export const listPosts = /* GraphQL */ `
  query ListPosts(
    $filter: ModelPostFilterInput
    $limit: Int
    $nextToken: String
  ) {
    listPosts(filter: $filter, limit: $limit, nextToken: $nextToken) {
      items {
        id
        title
        content
        comments {
          items {
            id
            message
            postID
            createdAt
            updatedAt
          }
          nextToken
        }
        createdAt
        updatedAt
      }
      nextToken
    }
  }
`;
  • 关联的comments属于分页集合,必须先获取items数组,再在其中指定要返回的Comment字段(如id、message等)
  • 若评论数量较多,可给comments传入limit和nextToken参数实现分页查询,示例:comments(limit: 10, nextToken: $commentNextToken)

修改完成后重新调用查询,即可获取到对应的嵌套评论数据。

内容的提问来源于stack exchange,提问作者eugenekr

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.04 03:55:20