私は単純な 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 を使用していますが、コードは次のエラーを返します。"message": "resolve_find_user() got an unexpected keyword argument 'name'",
グーグルの後、リゾルバーの動作方法が大幅に変更されたようです。graphene
私は経験し、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)
編集: is<class 'graphql.execution.base.ResolveInfo'>
とtype(info.context)
isのように見え<class 'werkzeug.local.LocalProxy'>
ます。context
SQLAlchemy コンテキストにする必要がありますか?