2017-06-01 88 views
1

我想寫一個解析器,它返回一個函數創建的對象。它從memcached獲得數據,所以沒有實際的model我可以把它綁定到。沒有模型的對象的石墨烯解析器

我認爲我的主要問題是我無法弄清楚使用什麼type以及如何設置它。我與Django一起使用它,但我不認爲這是一個Django問題(afaict)。這裏是我到目前爲止的代碼:

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) 

通知我不知道是什麼typefield使用。有人能幫我嗎? :)

回答

1

GraphQL被設計成後端不可知的,並且石墨烯被構建以支持諸如DjangoSQLAlchemy的各種python後端。要集成自定義後端,只需使用Graphene的type system定義模型並推出自己的解析器。

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