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。也许您在没有重新启动服务的情况下更新了架构,或者弄错了哪些字段实际上是接口的一部分——仅提供伪代码很难知道。