2

我目前正在尝试学习 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 有一定经验的人,我希望得到反馈,告诉我我做错了什么,以及在每个模型之间连接类型的正确方法是什么。如果您需要任何额外的信息或想要澄清,请随时询问。

谢谢你。

4

1 回答 1

1

graphql gem有两种使用 Ruby DSL 声明 GraphQL 对象的不同“风格”(它也可以直接导入 GraphQL 模式语言)旧样式(现已从文档中删除)使用GraphQL::ObjectType.define, 并且需要使用types语法限定大多数引用。 较新的样式使用 Ruby 类继承,并且不使用types.

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

field :members, [Types::UserType]
于 2018-09-22T01:02:19.817 回答