Возвращение массива graphQL - PullRequest
0 голосов
/ 21 сентября 2018

Я сейчас пытаюсь изучить 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",

Используемая мной внутренняя программа:Рубин на рельсах.Для тех, кто имеет некоторый опыт работы с GraphQL, я хотел бы услышать отзывы о том, что я делаю неправильно, а также о том, как правильно связать типы между каждой моделью.Если вам нужна дополнительная информация или вы хотите получить разъяснения, пожалуйста, не стесняйтесь спрашивать.

Спасибо.

1 Ответ

0 голосов
/ 22 сентября 2018

graphql gem имеет два разных "стиля" объявления объектов GraphQL с использованием Ruby DSL (и он также может напрямую импортировать язык схемы GraphQL).В более старом стиле (в настоящее время исключенном из документов) используется GraphQL::ObjectType.define, и ему необходимо квалифицировать большинство ссылок с синтаксисом types. Более новый стиль использует наследование классов Ruby и не использует types.

Короче говоря: я думаю, что ваш код будет работать, если вы просто измените последнее определение поля на

field :members, [Types::UserType]
...