首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用graphql-ruby实现联合类型

用graphql-ruby实现联合类型
EN

Stack Overflow用户
提问于 2019-10-12 13:20:21
回答 1查看 1.3K关注 0票数 2

我正在尝试用graphql-ruby实现一个联合类型。

我遵循了official documentation,但得到了下面列出的错误。

这是我当前的代码。

代码语言:javascript
复制
module Types
  class AudioClipType < Types::BaseObject
    field :id, Int, null: false
    field :duration, Int, null: false
  end
end

module Types
  class MovieClipType < Types::BaseObject
    field :id, Int, null: false
    field :previewURL, String, null: false
    field :resolution, Int, null: false
  end
end

module Types
  class MediaItemType < Types::BaseUnion
    possible_types Types::AudioClipType, Types::MovieClipType

    def self.resolve_type(object, context)
      if object.is_a?(AudioClip)
        Types::AudioClipType
      else
        Types::MovieClipType
      end
    end
  end
end

module Types
  class PostType < Types::BaseObject
    description 'Post'
    field :id, Int, null: false
    field :media_item, Types::MediaItemType, null: true
  end
end

下面是graphql查询。

代码语言:javascript
复制
{
  posts {
    id
    mediaItem {
      __typename
      ... on AudioClip {
        id
        duration
      }
      ... on MovieClip {
        id
        previewURL
        resolution
      }
    }
  }
}

当我发送查询时,我得到了以下错误。

代码语言:javascript
复制
Failed to implement Post.mediaItem, tried:
 - `Types::PostType#media_item`, which did not exist
 - `Post#media_item`, which did not exist
 - Looking up hash key `:media_item` or `"media_item"` on `#<Post:0x007fb385769428>`, but it wasn't a Hash

To implement this field, define one of the methods above (and check for typos

找不到任何打字错误或其他东西。

我是不是遗漏了什么??

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-01-28 05:24:33

您没有定义父类型(您的联盟的超类)。

所以添加

代码语言:javascript
复制
class Types::BaseUnion < GraphQL::Schema::Union
end

现在你的继承链将保持一致。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58351105

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档