Как настроить сервер Apollo GraphQL на прием объекта в качестве переменной для мутации? - PullRequest
0 голосов
/ 18 октября 2018

В настоящее время я пытаюсь передать объект как переменную в мутацию, как показано ниже:

type ShopLocation {
  lane1: String
  lane2: String
  city: String
  postalCode: String
  country: String
}

type ShopResponse {
  statusCode: Int
  messageCode: String
  data: String
}

type Mutation {
  createShop(
    name: String
    email: String
    location: ShopLocation
  ): ShopResponse
}

Но я получаю следующую ошибку:

{
  "error": {
    "errors": [
      {
        "message": "The type of Mutation.createShop(location:) must be Input Type but got: ShopLocation.",
        "extensions": {
          "code": "GRAPHQL_VALIDATION_FAILED",
          "exception": {
            "stacktrace": [
              "Error: The type of Mutation.createShop(location:) must be Input Type but got: ShopLocation.",
              "    at assertValidSchema (.../node_modules/graphql/type/validate.js:71:11)",
              "    at Object.validate (.../node_modules/graphql/validation/validate.js:55:35)",
              "    at Promise.resolve.then (.../node_modules/apollo-server-core/src/runQuery.ts:188:30)",
              "    at <anonymous>",
              "    at process._tickDomainCallback (internal/process/next_tick.js:228:7)"
            ]
          }
        }
      }
    ]
  }
}

Любая идеякак правильно это сделать?

1 Ответ

0 голосов
/ 18 октября 2018

Вам нужно сделать ключевое слово ShopLocation с input вместо type,

input ShopLocationInput {
  lane1: String
  lane2: String
  city: String
  postalCode: String
  country: String
}

type ShopResponse {
  statusCode: Int
  messageCode: String
  data: String
}

type Mutation {
  createShop(
    name: String
    email: String
    location: ShopLocationInput
  ): ShopResponse
}
...