与石墨烯后端反应阿波罗中 graphql 接口类型的常见字段

Posted

技术标签:

【中文标题】与石墨烯后端反应阿波罗中 graphql 接口类型的常见字段【英文标题】:Common fields on graphql interface type in react apollo with a graphene backend 【发布时间】:2020-01-16 03:26:13 【问题描述】:

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

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

【问题讨论】:

【参考方案1】:

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

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

【讨论】:

是的,我的后端代码有错误?‍♂️。谢谢!

以上是关于与石墨烯后端反应阿波罗中 graphql 接口类型的常见字段的主要内容,如果未能解决你的问题,请参考以下文章

反应中的奇怪错误-使用阿波罗/客户端-graphql

表达 http:graphql 突变上的 500 错误以在反应中从阿波罗客户端创建用户

带有嵌套类型的 Graphql 突变?

Python GraphQL 如何声明一个自引用的石墨烯对象类型

具有外键关系的对象的石墨烯中的 GraphQL 突变

如何在“GraphQL链接模式(客户端和服务器)的反应母语