在 Graphene python 解析器中调用自定义方法
Calling a custom method in a Graphene python resolver
你好,我只是想避免为每个查询重复代码,我想知道我是否可以从解析器内部调用这样的方法:
# 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.GraphQLLocatedError:'NoneType' 对象没有属性 'do_boring_task'”错误
是否可以按照我描述的方式来做,或者这是应该使用中间件来完成的事情吗?
谢谢
类 继承自 graphene.ObjectType
不同于普通的 class,resolve_field
和 do_boring_task
默认是静态方法。
注意resolve_field
的第一个参数是parent
而不是self
,do_boring_task
是class方法(其他语言的静态方法)查询 class 并且在父架构中不存在,这解释了您的错误。
您的问题的快速解决方案如下所示,在 class.
之外定义函数
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
更多详细信息请参阅博客中的这些内容
你好,我只是想避免为每个查询重复代码,我想知道我是否可以从解析器内部调用这样的方法:
# 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.GraphQLLocatedError:'NoneType' 对象没有属性 'do_boring_task'”错误
是否可以按照我描述的方式来做,或者这是应该使用中间件来完成的事情吗?
谢谢
类 继承自 graphene.ObjectType
不同于普通的 class,resolve_field
和 do_boring_task
默认是静态方法。
注意resolve_field
的第一个参数是parent
而不是self
,do_boring_task
是class方法(其他语言的静态方法)查询 class 并且在父架构中不存在,这解释了您的错误。
您的问题的快速解决方案如下所示,在 class.
之外定义函数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
更多详细信息请参阅博客中的这些内容