调用石墨烯python解析器中的自定义方法



你好,我只是想避免每个查询重复代码,我想知道我是否可以从解析器内部调用一个方法,如:

# pseudo code
class Query(graphene.ObjectType):
field = graphene.Field(SomeType)
def do_boring_task(parent, info, arg):

return "I did something"
def resolve_field(parent, info):
did_something = parent.do_boring_task(arg) # <-- is this possible ?

# do something here
return resolved_fields

我总是得到"graphql.error.located_error。graphqllocateerror: 'NoneType'对象没有属性'do_boring_task'"误差

是否有可能做到我描述的方式,或者这是应该使用中间件完成的事情?

感谢

继承自graphene.ObjectType的类与普通类不同,resolve_fielddo_boring_task默认为静态方法

注意resolve_field的第一个参数是parent而不是self,do_boring_task是Query类的类方法(其他语言中的静态方法),不存在于父模式中,这解释了您的错误。

对这个问题的快速修复如下所示,在类之外定义函数。

def do_boring_task(args):
return "I did something"
class Query(graphene.ObjectType):
field = graphene.Field(SomeType)
def resolve_field(parent, info):
did_something = do_boring_task(arg)       
# do something here
return resolved_fields

更多细节请参阅博客

隐含静态方法

类之外的解析器

最新更新