2

私は単純な 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)

私はgraphene2.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'>ます。contextSQLAlchemy コンテキストにする必要がありますか?

4

1 に答える 1