0

我有一个带有接口和两种类型的 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
    }
  }
}

但据我了解,也应该可以简单地查询公共字段

query {
  interfaceQuery 
    id
    name
  }
}

但是,当我尝试这个时,我得到了错误Cannot query field "id" on type "InterfaceType". Did you mean to use an inline fragment on "Type1" or "Type2"?

我正在使用一个IntrospectionFragmentMatcher.

我是不是误解了,这种对公共字段的简单访问是不可能的,或者它只是没有在石墨烯或阿波罗中实现?

4

1 回答 1

1

如果您看到该错误,则它来自服务器,而不是 Apollo。但是,没有什么特定于 Apollo 或 Graphene 可以阻止您在没有片段的情况下查询接口字段。

抛出错误是因为您使用的任何模式在提供的 type 上都没有该字段。也许您在没有重新启动服务的情况下更新了架构,或者错误地认为哪些字段实际上是接口的一部分——仅提供伪代码很难知道。

于 2019-09-14T18:09:37.740 回答