我的项目有问题,我在互联网上找不到任何解决方案。情况就是这样。
以下是“Zone”,“Teaser”和“Program”模式的部分:
type Program {
title: String
}
type Teaser {
title: String!
}
union DataResult = Teaser | Program
type Zone {
(...)
data: [DataResult!]
}
当我尝试按照下面的查询部分所述查询区域数据时,我从graphQL收到错误。
zones {
...zoneFieldsWithoutData
data {
... on Program {
...programFields
}
... on Teaser {
...teaserFields
}
}
}
这是错误:
Error: GraphQL error: Fields \"title\" conflict because they return conflicting types String and String!. Use different aliases on the fields to fetch both if this was intentional
我无法使用别名,因为规范需要所有“DataResult”实体的相同属性名称。我该怎么办?
此外,即使我为“标题”设置相同的类型,我也会在控制台中发出很多关于“缺少字段”的警告....
PS:我使用Vanilla Apollo作为graphQL客户端(在服务器端)
答案 0 :(得分:0)
它是根据规范实现的: 参见3.a,网址为:http://facebook.github.io/graphql/draft/#SameResponseShape()
有关更多详细信息,请参见https://github.com/graphql/graphql-js/issues/1361#issuecomment-393489320。
答案 1 :(得分:0)
使用interface为我解决了这个问题,包括“缺少字段”-错误(尽管这意味着字段必须与我认为的类型相同)。
类似的东西
interface DataResult {
title: String!
}
type Program implements DataResult {
// Not sure if this can be empty?
}
type Teaser implements DataResult {
// Not sure if this can be empty?
}
type Zone {
(...)
data: [DataResult!]
}
答案 2 :(得分:0)