graphql 接口类型上的公共字段与石墨烯后端反应阿波罗
Common fields on graphql interface type in react apollo with a graphene backend
我有一个 python 带有接口和两种类型的 graphene-django 后端,比方说
interface InterfaceType {
id: ID!
name: String!
}
type Type1 implements InterfaceType {
aField: String
}
type Type2 implements InterfaceType {
anotherField: String
}
我可以使用内联片段从我的 react-apollo 前端查询这个:
query {
interfaceQuery {
...on Type1 {
id
name
}
...on Type1 {
id
name
}
}
}
但是from what I understand也应该可以像
一样简单地查询公共字段
query {
interfaceQuery
id
name
}
}
然而,当我尝试这样做时,出现错误 Cannot query field "id" on type "InterfaceType". Did you mean to use an inline fragment on "Type1" or "Type2"?
我正在使用 IntrospectionFragmentMatcher
。
我是不是误会了,这种对公共字段的简单访问是不可能的,还是石墨烯或阿波罗都没有实现?
如果您看到该错误,则表明它来自服务器,而不是 Apollo。但是,没有任何特定于 Apollo 或 Graphene 的东西可以阻止您在没有片段的情况下查询接口字段。
抛出错误是因为无论您使用什么架构 literally doesn't have that field on the provided type。也许您在没有重新启动服务的情况下更新了架构,或者弄错了哪些字段实际上是接口的一部分——仅提供伪代码很难知道。
我有一个 python 带有接口和两种类型的 graphene-django 后端,比方说
interface InterfaceType {
id: ID!
name: String!
}
type Type1 implements InterfaceType {
aField: String
}
type Type2 implements InterfaceType {
anotherField: String
}
我可以使用内联片段从我的 react-apollo 前端查询这个:
query {
interfaceQuery {
...on Type1 {
id
name
}
...on Type1 {
id
name
}
}
}
但是from what I understand也应该可以像
一样简单地查询公共字段query {
interfaceQuery
id
name
}
}
然而,当我尝试这样做时,出现错误 Cannot query field "id" on type "InterfaceType". Did you mean to use an inline fragment on "Type1" or "Type2"?
我正在使用 IntrospectionFragmentMatcher
。
我是不是误会了,这种对公共字段的简单访问是不可能的,还是石墨烯或阿波罗都没有实现?
如果您看到该错误,则表明它来自服务器,而不是 Apollo。但是,没有任何特定于 Apollo 或 Graphene 的东西可以阻止您在没有片段的情况下查询接口字段。
抛出错误是因为无论您使用什么架构 literally doesn't have that field on the provided type。也许您在没有重新启动服务的情况下更新了架构,或者弄错了哪些字段实际上是接口的一部分——仅提供伪代码很难知道。