【问题标题】:Returning an array graphQL返回一个数组 graphQL
【发布时间】:2018-09-21 18:25:18
【问题描述】:

我目前正在尝试学习 GraphQL,但遇到了问题。问题可能是不理解编写类型的正确方法。当我的用户类型为

module Types
  UserType = GraphQL::ObjectType.define do
    name 'User'

    field :id, !types.ID
    field :username, !types.String
    field :email, !types.String, property: :email_address
    field :workspaces, types[Types::WorkspaceType]
  end
end

我能够毫无问题地返回一组工作区。现在,当我尝试返回与该工作区关联的一组用户时,问题就来了。我的工作区类型如下所示

class Types::WorkspaceType < Types::BaseObject
  field :id, ID, null: false
  field :user_id, ID, null: false
  field :name, String, null: false
  field :members, types[Types::UserType]
end

当我尝试在获取工作区时运行查询时,我收到一条错误消息,提示

  "error": {
    "message": "undefined local variable or method `types' for Types::UserType:Class",

我使用的后端是 Ruby on Rails。对于那些对 GraphQL 有一定经验的人,我希望得到反馈,告诉我我做错了什么,以及在每个模型之间连接类型的正确方法是什么。如果您需要任何额外的信息或想要澄清,请随时询问。

谢谢。

【问题讨论】:

    标签: ruby graphql graphql-ruby


    【解决方案1】:

    graphql gemtwo different "styles" 使用 Ruby DSL 声明 GraphQL 对象(它也可以直接导入 GraphQL 模式语言)。旧样式(现已从文档中删除)使用 GraphQL::ObjectType.define,并且需要使用 types 语法限定大多数引用。 The newer style uses Ruby class inheritance,不使用types

    简而言之:我认为如果您将最后一个字段定义更改为

    ,您的代码就会起作用
    field :members, [Types::UserType]
    

    【讨论】:

      猜你喜欢
      • 2022-01-09
      • 1970-01-01
      • 2018-10-20
      • 2018-01-30
      • 2019-01-08
      • 2022-10-04
      • 1970-01-01
      • 1970-01-01
      • 2016-11-20
      相关资源
      最近更新 更多