в первый раз я был таким кодом для мутации:
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...
кто-то может помочь!?
спасибо!