Flask - насколько хорошая проверка для SignUp Mutation GraphQL? - PullRequest
0 голосов
/ 14 марта 2020

в первый раз я был таким кодом для мутации:

class SignUp(graphene.Mutation):

    user = graphene.Field(lambda: UsersObject)

    auth_token = graphene.String()


    class Arguments:

        input = CreateUserInput(required=True)

    `#HERE`

    def mutate(self, info, input):

        user = UsersModel(**input)

        if UsersModel.objects.get(email=user.email):

            raise Exception("User exist...")


        user.set_password(user.password_hash)

        user.save()

        return SignUp(user=user, auth_token=user.encode_auth_token(str(user.id)).decode())

, если пользователь существует в базе данных, все go хорошо, но если не существует, не сохраняется, приложение разрывается, и я был получить это:

...

graphql.error.located_error.GraphQLLocatedError: UsersModel matching query does not exist.

...

тогда я решаю эту проблему с помощью try / Кроме того, приложение не останавливается, но ...:

...

#HERE

def mutate(self, info, input):

    user = UsersModel(**input)

    exist = None


    try:

        exist = UsersModel.objects.get(email=user.email)

    except:

        pass


    if exist is not None:

        raise Exception("User exist...")

...

сейчас, если пользователь не находится в базе данных , сохраняется нормально, но я думаю, что есть лучшая практика для этого, потому что вывод не очень хорош в консоли:

An error occurred while resolving field Mutation.signup

Traceback (most recent call last):

File "/home/barcelo/flask_graphql/env/lib/python3.6/site-packages/graphql/execution/executor.py", line 450, in resolve_or_error

return executor.execute(resolve_fn, source, info, **args)

File "/home/barcelo/flask_graphql/env/lib/python3.6/site-packages/graphql/execution/executors/sync.py", line 16, in execute

return fn(*args, **kwargs)

File "/home/barcelo/flask_graphql/server/core/schemas/usersSchema.py", line 49, in mutate

raise Exception("User exist...")

Exception: User exist...

Traceback (most recent call last):

File "/home/barcelo/flask_graphql/env/lib/python3.6/site-packages/graphql/execution/executor.py", line 450, in resolve_or_error

return executor.execute(resolve_fn, source, info, **args)

File "/home/barcelo/flask_graphql/env/lib/python3.6/site-packages/graphql/execution/executors/sync.py", line 16, in execute

return fn(*args, **kwargs)

File "/home/barcelo/flask_graphql/server/core/schemas/usersSchema.py", line 49, in mutate

raise Exception("User exist...")

graphql.error.located_error.GraphQLLocatedError: User exist...

кто-то может помочь!?

спасибо!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...