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