Мутация, отправляющая нулевые параметры на Apollo-Android - PullRequest
0 голосов
/ 25 июня 2018

Я пытаюсь интегрировать Apollo-Android с сервером, смонтированным локально, запрос на показ всех записей работает нормально, но когда я пытаюсь создать новую запись, он отправляет запрос без параметров.

Сначала я подумал, что это проблема на стороне сервера, но это не похоже на это, поскольку он создает запись, но с нулевыми значениями.

Сервер, который сделан на Spring Boot с использованием SPQRдля генерации схемы и SpringData-JPA с Hibernate для подключения к базе данных PostGreSQL.

Вот что говорит сервер:

Hibernate: insert into author (first_name, last_name) values (?, ?) 2018-06-25 14:48:25.479 INFO 6670 --- [nio-8080-exec-3] s.testing.controllers.GraphQLController : {data={createAuthor={__typename=Author, firstName=null, lastName=null}}}

И вот ответ, который я получаю в Android Studio:

06-25 14:48:24.974 16068-16132/com.example.nburk.apollodemo D/graphcool: Executed mutation: CreateAuthor{__typename=Author, firstName=null, lastName=null}

В Android Studio это строитель:

private void createPost(String firstname, String lastname) { application.apolloClient().mutate( CreateAuthorMutation.builder() .firstName(firstname) .lastName(lastname) .build()) .enqueue(createPostMutationCallback); }

Это ставит в очередь это:

private ApolloCall.Callback<CreateAuthorMutation.Data> createPostMutationCallback = new ApolloCall.Callback<CreateAuthorMutation.Data>() { @Override public void onResponse(@Nonnull final Response<CreateAuthorMutation.Data> dataResponse) { Log.d(ApolloDemoApplication.TAG, "Executed mutation: " + dataResponse.data().createAuthor().toString()); fetchPosts(); } @Override public void onFailure(@Nonnull ApolloException e) { Log.d(ApolloDemoApplication.TAG, "Error:" + e.toString()); } };

Если вам это нужно, вот моя мутация:

mutation CreateAuthor($firstName: String, $lastName: String){ createAuthor(firstName: $firstName, lastName: $lastName){ firstName lastName } }

Этот проект основан на следующем: https://github.com/graphcool-examples/android-graphql/tree/master/quickstart-with-apollo

Загрузка моей схемы too.

Copia de schema.txt

Заранее спасибо за вашу помощь.

1 Ответ

0 голосов
/ 28 июня 2018

Проблема была из SPQR, вам нужно добавить маппер для переменных

@PostMapping(value = "/graphql", consumes = MediaType.APPLICATION_JSON_UTF8_VALUE, produces = MediaType.APPLICATION_JSON_UTF8_VALUE) @ResponseBody public Map<String, Object> indexFromAnnotated(@RequestBody Map<String, Object> request, HttpServletRequest raw) { ExecutionResult executionResult = graphQL.execute(ExecutionInput.newExecutionInput() .query((String) request.get("query")) .operationName((String) request.get("operationName")) // -------- THIS RESOLVES THE VARIABLES-------- .variables((Map<String, Object>) request.get("variables")) .context(raw) .build()); LOGGER.info(executionResult.toSpecification().toString()); return executionResult.toSpecification(); }

...