2017-06-16 1 views
0

Ich habe eine Frage, die ich scheinbar nicht alleine lösen kann.

Zusammen mit grundlegenden Frage, Mutation usw. Typen I die folgende Typdefinition gemacht haben:

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 

Und ich versuche es dann zur Abfrage mit:

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 
    } 
} 

Und ich pass die folgende als Abfragevariablen:

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

Das Problem ist, dass es mit dem folgenden verschuldet:

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

Ich habe ehrlich gesagt keine Ahnung, warum es beschwert sich über die Art Int ...

Wenn ich der problematischen $first Abfragevariable in der Anforderung loszuwerden, es funktioniert gut.

Dies:

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

Produziert dies:

{ 
    "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" 
    } 
    } 
} 

Irgendwelche Hinweise, Ideen, wie man dieses Problem beheben? Ich benutze das graphql-Juwel v1.6.3.

+0

Haben Sie Ihr Problem lösen? Ich habe die gleiche Fehlermeldung, obwohl der Typ im Schema definiert ist ... – nattfodd

+0

Hey, @nattfodd, pls überprüfen Sie die akzeptierte Antwort unten. AFAIK, die Fehlerbehebung für das Problem wurde zusammengeführt und sollte seitdem veröffentlicht werden. Wenn Sie immer noch auf das gleiche Problem stoßen, denke ich, dass das Problem möglicherweise noch zu lösen ist. – eploko

Antwort

0

Derzeit scheint ein Fehler in graphql-ruby zu sein, der verhindert, dass Typen, die nicht explizit in einem Schema verwendet werden, weitergegeben werden. Überprüfen Sie dieses Problem auf GitHub: https://github.com/rmosolgo/graphql-ruby/issues/788#issuecomment-308996229

Um den Fehler zu beheben, muss ein Int Feld irgendwo im Schema enthalten. Es stellte sich heraus, dass ich keines hatte. Huch.

Dieses regelte es für mich:

# Make sure Int is included in the schema: 
field :testInt, types.Int 
Verwandte Themen