Я использую сервер GraphQL AWS AppSync со следующей (упрощенной) схемой:
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
Когда я делаю запрос, включающий встроенных фрагментов , чтобы выбрать status
в качествепотомок типа Event
или Payment
в поле Issue/data
, я получаю ошибку FieldsConflict :
query getIssue($id: String!) {
getIssue(id: $id) {
id
data {
... on Event {
time
status
}
... on Payment {
amount
status
}
}
}
}
Ошибка проверки типа FieldsConflict:status: поля имеют разные формы списка @ 'getIssue / data'
Это, вероятно, вызвано тем, что поле Event/status
возвращает массив строк, а поле Payment/status
возвращает одну строку.
Почему GraphQL считает это конфликтом?Как мне создать свой запрос, чтобы разрешить доступ к полю состояния для обоих типов данных?
Обратите внимание, что я использую объединение, а не расширенный интерфейс, потому что типы Issue
и Payment
не имеют общихструктура данных.