Использование идентификатора в параметризованном запросе GraphQL - PullRequest
0 голосов
/ 11 марта 2020

У меня есть следующая схема:

type Post {
  id: ID!
  text: String
}

Я использую автоматически сгенерированные мутации из neo4j-graphql.js, поэтому у меня есть доступ к следующей мутации:

UpdatePost(
id: ID!
text: String
): Post

The Проблема:

Когда я использую следующий запрос:

mutation update($id: String, $text: String) {
  UpdatePost(id: $id, text: $text) {
    id
    text
  }
}

Со следующими параметрами:

{
  "id": "a19289b3-a191-46e2-9912-5a3d1b067cb2",
  "text": "text"
}

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

{
  "error": {
    "errors": [
      {
        "message": "Variable \"$id\" of type \"String\" used in position expecting type \"ID!\".",
        "locations": [
          {
            "line": 1,
            "column": 17
          },
          {
            "line": 2,
            "column": 18
          }
        ],
        "extensions": {
          "code": "GRAPHQL_VALIDATION_FAILED"
        }
      }
    ]
  }
}

Есть ли способ преобразовать мой идентификатор строки в фактический тип идентификатора? Или вообще обойти эту ошибку?

1 Ответ

1 голос
/ 11 марта 2020

Ошибка, которую вы видите, связана с типом ваших переменных, как указано в определениях переменных вашего запроса. Это не имеет ничего общего со значениями переменных (которые кажутся правильными). На основании сообщения об ошибке тип вашей переменной $id равен String, а не ID, как показано в вставленном вами запросе.

Независимо от типа аргумента id (где переменная $id используется) ID!, а не ID, тогда тип вашей переменной также должен быть ID!.

! указывает ненулевой (обязательный) тип. Другими словами, аргумент id должен всегда указываться, и ему не может быть присвоено значение null. Любая переменная, переданная в качестве аргумента, также должна быть ненулевой. Если тип переменной ID вместо ID!, мы сообщаем GraphQL, что переменная может быть опущена или иметь значение null, что несовместимо с аргументом, в котором она используется.

Обратите внимание, что обратное неверно: если тип аргумента был ID, тогда допустима либо переменная ID, либо ID!.

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