2017-06-01 28 views
1

Ich versuche, einen Resolver zu schreiben, der ein Objekt zurückgibt, das von einer Funktion erstellt wird. Es bekommt die Daten von memcached, also gibt es keine tatsächlichen model ich kann es binden.Graphen-Resolver für ein Objekt, das kein Modell hat

Ich denke, mein Hauptproblem ist, ich kann nicht herausfinden, was type zu verwenden und wie Sie es einrichten. Ich benutze das in Verbindung mit Django, aber ich glaube nicht, dass es ein Django-Problem ist (afaikt). Hier ist mein Code so weit:

class TextLogErrorGraph(DjangoObjectType): 

    def bug_suggestions_resolver(root, args, context, info): 
     from treeherder.model import error_summary 
     return error_summary.bug_suggestions_line(root) 

    bug_suggestions = graphene.Field(TypeForAnObjectHere, resolver=bug_suggestions_resolver) 

Hinweis Ich weiß nicht, was type oder field zu verwenden. Kann mir jemand helfen? :)

Antwort

1

GraphQL wurde entwickelt, um Backend-Agnostiker zu sein, und Graphen wurde erstellt, um verschiedene Python-Backends wie Django und SQLAlchemy zu unterstützen. Um Ihr benutzerdefiniertes Backend zu integrieren, definieren Sie einfach Ihre Modelle mit Graphenes type system und rollen Sie Ihre eigenen Resolver aus.

import graphene 
import time 

class TextLogEntry(graphene.ObjectType): 

    log_id = graphene.Int() 
    text = graphene.String() 
    timestamp = graphene.Float() 
    level = graphene.String() 

def textlog_resolver(root, args, context, info): 
    log_id = args.get('log_id') # 123 
    # fetch object... 
    return TextLogEntry(
     log_id=log_id, 
     text='Hello World', 
     timestamp=time.time(), 
     level='debug' 
    ) 

class Query(graphene.ObjectType): 

    textlog_entry = graphene.Field(
     TextLogEntry, 
     log_id=graphene.Argument(graphene.Int, required=True), 
     resolver=textlog_resolver 
    ) 


schema = graphene.Schema(
    query=Query 
) 

Example query with GraphiQL

Verwandte Themen