Мутация GraphQL не работает с RuntimeWiring.newRuntimeWiring () - PullRequest
0 голосов
/ 03 ноября 2018

Я определил простую схему в GraphQL Java для добавления Book и извлечения [Book]. Моя схема выглядит так:

schema {
 query: Query
 mutation : Mutation
}

type Query {
 allBooks: [Book]
 book(id: String): Book
}

type Book {
  isn: String
  title: String
  publisher: String
  author: String
  publishedDate: String
}

input BookType {
  isn: String
  title: String
  publisher: String
  author: String
  publishedDate: String
}

type Mutation {
  newBook(
      isn: String!,
      title: String!,
      publisher: String!,
      authors:String!,
      publishedDate: String!
  ): Book
}

Я создал проводку во время выполнения так:

RuntimeWiring.newRuntimeWiring()
  .type("Query", typeWiring ->
    typeWiring.dataFetcher("allBooks", allBooksDataFetcher))
  .type("Mutation", typeWiring ->
    typeWiring.dataFetcher("newBook", addBooksDataFetcher))
  .build();

Запрос allBooks работает нормально, но мутация newBook не работает и выдает следующую ошибку:

"errors": [
  {
    "validationErrorType": "FieldUndefined",
    "message": "Validation error of type FieldUndefined: Field oneBook is undefined",
    "locations": [
      {
        "line": 3,
        "column": 3
      }
    ],
    "errorType": "ValidationError"
  }
],
  "data": null,
  "extensions": null
}

Мутация через Почтальон:

{
  newBook(
    isn:"1",
    title: "test title",
    publisher: "test publisher",
    authors:"test author",
    publishedDate: "2 Nov 2018"
  ) {
    title
  }
}

Пожалуйста, помогите мне. Он не принимает Mutation Type, но Query работает абсолютно нормально. Я что-то упустил?

1 Ответ

0 голосов
/ 03 ноября 2018

Я не уверен, на что ссылается ошибка, но вам нужно включить операцию (query против mutation) при выполнении мутации. То есть ваш запрос должен выглядеть примерно так:

mutation ArbitraryOperationName {
  newBook(
    isn:"1",
    title: "test title",
    publisher: "test publisher",
    authors:"test author",
    publishedDate: "2 Nov 2018"
  ) {
    title
  }
}

При написании запросов вы можете использовать сокращенную запись и опустить ключевое слово query, но мутации всегда должны включать mutation, чтобы указать, что вы делаете мутацию, а не запрос.

...