From 04fe299a6e71b15d638dbbb3a48e6c8f8dc50d3d Mon Sep 17 00:00:00 2001 From: changeling Date: Wed, 15 May 2019 19:50:55 -0500 Subject: [PATCH] Corrected docs/queries.rst. (#633) * Corrected typos in docs/queries.rst. * Add basic resolvers to Relay Full example in docs/queries.rst. Added basic resolvers to Full example in Relay section. * Remove question and question resolver. * Add query example to queries.rst. Added query example in Relay section. Minor clean-up. --- docs/queries.rst | 72 ++++++++++++++++++++++++++++++++++++++++++++---- 1 file changed, 67 insertions(+), 5 deletions(-) diff --git a/docs/queries.rst b/docs/queries.rst index d54c908..0edd1dd 100644 --- a/docs/queries.rst +++ b/docs/queries.rst @@ -30,7 +30,7 @@ Full example class Query: questions = graphene.List(QuestionType) - question = graphene.Field(Question, question_id=graphene.String()) + question = graphene.Field(QuestionType, question_id=graphene.String()) def resolve_questions(self, info, **kwargs): # Querying a list @@ -243,6 +243,8 @@ There is one additional import and a single line of code needed to adopt this: Full example ~~~~~~~~~~~~ +See the `Relay documentation `__ on +the core graphene pages for more information on customizing the Relay experience. .. code:: python @@ -254,7 +256,7 @@ Full example class QuestionType(DjangoObjectType): class Meta: model = Question - interaces = (relay.Node,) + interfaces = (relay.Node,) class QuestionConnection(relay.Connection): @@ -263,8 +265,68 @@ Full example class Query: - question = graphene.Field(QuestionType) questions = relay.ConnectionField(QuestionConnection) -See the `Relay documentation `__ on -the core graphene pages for more information on customing the Relay experience. \ No newline at end of file + def resolve_questions(root, info, **kwargs): + return Question.objects.all() + + +You can now execute queries like: + + +.. code:: python + + { + questions (first: 2, after: "YXJyYXljb25uZWN0aW9uOjEwNQ==") { + pageInfo { + startCursor + endCursor + hasNextPage + hasPreviousPage + } + edges { + cursor + node { + id + question_text + } + } + } + } + +Which returns: + +.. code:: python + + { + "data": { + "questions": { + "pageInfo": { + "startCursor": "YXJyYXljb25uZWN0aW9uOjEwNg==", + "endCursor": "YXJyYXljb25uZWN0aW9uOjEwNw==", + "hasNextPage": true, + "hasPreviousPage": false + }, + "edges": [ + { + "cursor": "YXJyYXljb25uZWN0aW9uOjEwNg==", + "node": { + "id": "UGxhY2VUeXBlOjEwNw==", + "question_text": "How did we get here?" + } + }, + { + "cursor": "YXJyYXljb25uZWN0aW9uOjEwNw==", + "node": { + "id": "UGxhY2VUeXBlOjEwOA==", + "name": "Where are we?" + } + } + ] + } + } + } + +Note that relay implements :code:`pagination` capabilities automatically, adding a :code:`pageInfo` element, and including :code:`cursor` on nodes. These elements are included in the above example for illustration. + +To learn more about Pagination in general, take a look at `Pagination `__ on the GraphQL community site.