石墨烯 - GraphQL:'Request' 对象没有属性 'context'
Graphene - GraphQL : 'Request' object has no attribute 'context'
我正在开发一个简单的 GraphQL Flask API,我正在实现一个简单的查找用户解析器。这是我的 schema.py
import graphene
from graphene import relay
from graphene_sqlalchemy import SQLAlchemyObjectType, SQLAlchemyConnectionField
from models import db_session, Users as UsersModel, Channel as ChannelModel, Video as VideoModel
class Users(SQLAlchemyObjectType):
class Meta:
model = UsersModel
interfaces = (relay.Node, )
class Channel(SQLAlchemyObjectType):
class Meta:
model = ChannelModel
interfaces = (relay.Node, )
class Query(graphene.ObjectType):
node = relay.Node.Field()
users = SQLAlchemyConnectionField(Users)
find_user = graphene.Field(Users, name = graphene.String())
all_user = SQLAlchemyConnectionField(Users)
def resolve_find_user(self, args, context, info):
query = Users.get_query(context)
name = args.get('name')
return query.get(name)
我正在使用 graphene
2.0 和代码 returns "message": "resolve_find_user() got an unexpected keyword argument 'name'",
的错误 经过一些谷歌搜索,它看起来像是 [=15 中的 major change =] 改变解析器的工作方式。
我检查了 UPGRADE-v2.0.md
并进行了相应的更改。解析器现在看起来像这样。
# def resolve_find_user(self, info, name):
# query = Users.get_query(info.context)
# return query.get(name)
现在,关键字参数消失了,但我遇到了一个新问题。错误是 "message": "'Request' object has no attribute 'context'",
。现在我很困惑,因为我认为 info.context
应该有效,但显然不是。关于如何解决此上下文问题的任何想法?这是我第一次使用 GraphQL,非常感谢任何帮助!
编辑:看起来 type(info)
是 <class 'graphql.execution.base.ResolveInfo'>
而 type(info.context)
是 <class 'werkzeug.local.LocalProxy'>
。 context
应该是 SQLAlchemy 上下文吗?
在 2.0 版本的石墨烯中,你的解决方案是这样的
def resolve_find_user(self, info, name):
query = Users.get_query(info)
return query.filter(UsersModel.name == name).first()
更多信息here
我正在开发一个简单的 GraphQL Flask API,我正在实现一个简单的查找用户解析器。这是我的 schema.py
import graphene
from graphene import relay
from graphene_sqlalchemy import SQLAlchemyObjectType, SQLAlchemyConnectionField
from models import db_session, Users as UsersModel, Channel as ChannelModel, Video as VideoModel
class Users(SQLAlchemyObjectType):
class Meta:
model = UsersModel
interfaces = (relay.Node, )
class Channel(SQLAlchemyObjectType):
class Meta:
model = ChannelModel
interfaces = (relay.Node, )
class Query(graphene.ObjectType):
node = relay.Node.Field()
users = SQLAlchemyConnectionField(Users)
find_user = graphene.Field(Users, name = graphene.String())
all_user = SQLAlchemyConnectionField(Users)
def resolve_find_user(self, args, context, info):
query = Users.get_query(context)
name = args.get('name')
return query.get(name)
我正在使用 graphene
2.0 和代码 returns "message": "resolve_find_user() got an unexpected keyword argument 'name'",
的错误 经过一些谷歌搜索,它看起来像是 [=15 中的 major change =] 改变解析器的工作方式。
我检查了 UPGRADE-v2.0.md
并进行了相应的更改。解析器现在看起来像这样。
# def resolve_find_user(self, info, name):
# query = Users.get_query(info.context)
# return query.get(name)
现在,关键字参数消失了,但我遇到了一个新问题。错误是 "message": "'Request' object has no attribute 'context'",
。现在我很困惑,因为我认为 info.context
应该有效,但显然不是。关于如何解决此上下文问题的任何想法?这是我第一次使用 GraphQL,非常感谢任何帮助!
编辑:看起来 type(info)
是 <class 'graphql.execution.base.ResolveInfo'>
而 type(info.context)
是 <class 'werkzeug.local.LocalProxy'>
。 context
应该是 SQLAlchemy 上下文吗?
在 2.0 版本的石墨烯中,你的解决方案是这样的
def resolve_find_user(self, info, name):
query = Users.get_query(info)
return query.filter(UsersModel.name == name).first()
更多信息here