【发布时间】:2026-02-12 21:20:05
【问题描述】:
我正在使用具有以下(简化)架构的 AWS AppSync 的 GraphQL 服务器:
type Query {
getIssue(id: String!): Issue
}
type Issue {
id: String!
data: IssueData!
}
type Event {
id: String!
time: AWSDateTime!
status: [String]
}
type Payment {
id: String!
amount: Int!
status: String
}
union IssueData = Event | Payment
当我进行包含inline fragments 的查询以在Issue/data 字段中选择status 作为Event 或Payment 类型的子项时,我得到一个FieldsConflict 错误:
query getIssue($id: String!) {
getIssue(id: $id) {
id
data {
... on Event {
time
status
}
... on Payment {
amount
status
}
}
}
}
FieldsConflict 类型的验证错误:状态:字段具有不同的列表形状@'getIssue/data'
这可能是由于Event/status 字段返回一个字符串数组,而Payment/status 字段返回一个字符串。
为什么 GraphQL 认为这是一个冲突?我应该如何构造我的查询以允许访问两种数据类型的状态字段?
请注意,我使用的是联合而不是扩展接口,因为 Issue 和 Payment 类型没有共同的数据结构。
【问题讨论】:
标签: graphql aws-appsync