2017-12-20 7 views
0

Ich versuche Relaisverbindungen in Apollo zu implementieren, aber ich habe einige Probleme mit der Spezifikation.GraphQL Relay Connections Spezifikation für Apollo

Schema sieht wie folgt aus:

type PageInfo { 
    startCursor: String!, 
    endCursor: String!, 
    hasNextPage: Boolean!, 
    hasPreviousPage: Boolean! 
} 

type User : Node { 
    id: ID! 
    firstname: String 
    lastname: String 
} 

type UserConnection : Connection { 
    pageInfo: PageInfo! 
    edges: [UserEdge!]! 
} 

type UserEdge : Edge { 
    cursor: String! 
    node: User! 
} 

extend type Query { 
    users(first: Int, after: ID, order: String): UserConnection 
} 

Sagen wir, ich habe 100 Benutzer in db; Wenn ich mit ex.users abfragen (zuerst: 10), bezieht sich PageInfo.endCursor auf die 10nth-Kante oder die 100th?

Weitere Fragen:

1.Should Ich mache eine weitere Abfrage hasPreviousPage, hasNextPage zu erhalten.

2. Gibt es irgendwelche Codebeispiele (mit Resolvern), die eine ähnliche Struktur haben?

3. Gibt es irgendwelche graphql Chats (gitter, irc)?

Antwort

0

endCursor bezieht sich auf den zehnten, d. H. Es ist gleich dem Cursorfeld der letzten Kante im Ergebnis.

  1. allgemein gesprochen, Cursor-basierte Paginierung wie das ist nicht bidirektional. Sie können also nicht beide hasNextPage und hasPreviousPage kennen. Aber egal, was Sie holen, Sie müssen es nicht in einer anderen Abfrage ausgeben, holen Sie so viele Daten wie Sie können in einer Abfrage, das ist der Punkt!

  2. Es muss viele Beispiele für die Seitennummerierung von Relay geben, ich kenne sie nicht von ganz oben.

  3. Es gibt ein schwaches Team für Apollo und für GraphQL selbst. apollographql.slack.com

+0

Vielen Dank. Ich fand auch ein Beispiel, das mehr meiner Fragen beantwortet. https://github.com/nodkz/graphql-compose-connection/blob/master/src/connectionResolver.js –