graphql-ruby: Int 不是定义的输入类型(在 $first 上)
graphql-ruby: Int isn't a defined input type (on $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.
目前,graphql-ruby
中似乎存在一个错误,该错误会阻止传播模式中未明确使用的类型。在 GitHub 上查看此问题:https://github.com/rmosolgo/graphql-ruby/issues/788#issuecomment-308996229
要修复错误,必须在架构中的某处包含一个 Int
字段。原来我没有。哎呀。
这为我修复了它:
# Make sure Int is included in the schema:
field :testInt, types.Int
我有一个问题,我自己似乎无法解决。
连同基本的 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.
目前,graphql-ruby
中似乎存在一个错误,该错误会阻止传播模式中未明确使用的类型。在 GitHub 上查看此问题:https://github.com/rmosolgo/graphql-ruby/issues/788#issuecomment-308996229
要修复错误,必须在架构中的某处包含一个 Int
字段。原来我没有。哎呀。
这为我修复了它:
# Make sure Int is included in the schema:
field :testInt, types.Int