graphql-ruby: Int не определенный тип ввода (для $first)

У меня есть вопрос, который я не могу решить самостоятельно.

Вместе с базовыми типами Query, Mutation и т. Д. Я сделал следующее определение типа:

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

    implements GraphQL::Relay::Node.interface
    global_id_field :id

    field :email, !types.String, 'Email address'

    connection :docs, DocType.connection_type, 'Available docs'
  end  
end

И тогда я пытаюсь запросить это с:

query FileListQuery(
  $after: String
  $first: Int
) {
  viewer {
    currentUser {
      docs(first: $first, after: $after) {
        edges {
          node {
            id
            name
            __typename
          }
          cursor
        }
        pageInfo {
          endCursor
          hasNextPage
          hasPreviousPage
          startCursor
        }
      }
      id
    }
    id
  }
}

И я передаю следующее как переменные запроса:

{
  "first": 1,
  "after": null
}

Проблема заключается в следующем:

{
  "errors": [
    {
      "message": "Int isn't a defined input type (on $first)",
      "locations": [
        {
          "line": 3,
          "column": 3
        }
      ],
      "fields": [
        "query FileListQuery"
      ]
    }
  ]
}

Я, честно говоря, понятия не имею, почему он жалуется на тип Int...

Если я избавлюсь от проблемных $first переменная запроса в запросе, работает нормально.

Это:

query FileListQuery(
  $after: String
) {
  viewer {
    currentUser {
      docs(first: 10, after: $after) {
        edges {
          node {
            id
            name
            __typename
          }
          cursor
        }
        pageInfo {
          endCursor
          hasNextPage
          hasPreviousPage
          startCursor
        }
      }
      id
    }
    id
  }
}

Производит это:

{
  "data": {
    "viewer": {
      "currentUser": {
        "docs": {
          "edges": [
            {
              "node": {
                "id": "1",
                "name": "First Doc",
                "__typename": "Doc"
              },
              "cursor": "MQ=="
            }
          ],
          "pageInfo": {
            "endCursor": "MQ==",
            "hasNextPage": false,
            "hasPreviousPage": false,
            "startCursor": "MQ=="
          }
        },
        "id": "1"
      },
      "id": "VIEWER"
    }
  }
}

Есть намеки, идеи как это исправить? Я использую graphql gem v1.6.3.

1 ответ

Решение

В настоящее время, кажется, ошибка в graphql-ruby это предотвращает распространение типов, явно не используемых в схеме. Проверьте эту проблему на GitHub: https://github.com/rmosolgo/graphql-ruby/issues/788

Чтобы исправить ошибку, необходимо включить Int поле где-то в схеме. Оказывается, у меня его не было. Хлоп.

Это исправило это для меня:

# Make sure Int is included in the schema:
field :testInt, types.Int
Другие вопросы по тегам