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

AWS Amplify React Native中GraphQL无法查询子对象问题求助

解决AWS Amplify中Datasheet关联Point数据查询失败的问题

1. 修正GraphQL Schema的关联定义

@hasMany和@belongsTo是双向绑定的,必须同时配置才能让Amplify正确识别关联关系。你的Point类型缺少反向关联,需要补充配置:

type Point @model {
  id: ID! @primaryKey
  points: Int!
  models: String!
  datasheet: Datasheet @belongsTo(fields: ["datasheetId"])
  datasheetId: ID # 与现有Point数据中的"datasheet"字段对应,若不想改数据可将字段名改为"datasheet"
}
type Datasheet @model {
  id: ID! @primaryKey
  name: String!
  points: [Point] @hasMany(indexName: "byDatasheet", fields: ["id"])
}

2. 更新Amplify后端

修改Schema后,运行命令重新生成并部署API:

amplify push

若提示覆盖现有配置,选择确认即可。

3. 自定义查询语句获取关联数据

默认生成的listDatasheets不会自动返回嵌套的Point数据,需要手动编写包含关联字段的查询:

import { API, graphqlOperation } from 'aws-amplify';
import { gql } from '@apollo/client';

// 自定义带关联字段的查询
const LIST_DATASHEETS_WITH_POINTS = gql`
  query ListDatasheets {
    listDatasheets {
      items {
        id
        name
        points {
          items {
            id
            points
            models
          }
        }
      }
    }
  }
`;

// 执行查询
const fetchDatasheets = async () => {
  console.log('GET datasheets');
  const sheetData = await API.graphql(graphqlOperation(LIST_DATASHEETS_WITH_POINTS));
  const sheets = sheetData.data.listDatasheets.items;
  console.log(sheets[0].points.items);
  console.log(sheets);
  setSheets(sheets);
};

4. 验证数据关联

确认Point数据中的关联字段(datasheet或datasheetId)确实指向存在的Datasheet ID,确保数据间的关联关系正确。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 17:17:21