Из спецификации :
GraphQL имеет постоянный литерал для представления входных значений перечисления. Строковые литералы GraphQL не должны приниматься в качестве входных данных для перечисления, и вместо этого возникает ошибка запроса.
Запрос транспортных сериализаций переменных, которые имеют другое представление для нестроковых символических значений (например, EDN), должен разрешать только такие значения, как входные значения enum. В противном случае для большинства транспортных сериализаций, которые этого не делают, строки могут интерпретироваться как входное значение enum с тем же именем.
Другими словами, при использовании перечисления в качестве ввода, если вы используете его в качестве литерального значения, например:
Keys(input: { mode: test }) {
name
}
значение перечисления (в данном случае test
) не может быть заключено в кавычки, в отличие от строковых литералов, которые должны быть заключены в двойные кавычки.
С другой стороны, если вы используете переменную для замены значения перечисления, вы установите значение переменной в строку, как если бы вы использовали обычное строковое значение:
Keys(input: { mode: $mode }) {
name
}
// in your component...
variables: {
mode: 'test'
}
Поскольку JSON не включает концепцию значений перечисления, всякий раз, когда мы имеем дело с контекстом JSON (например, при объявлении переменных или при возврате data
для нашего запроса), значения перечисления просто сериализуются как строковые значения .
Все это, кроме того, если вы используете Apollo в качестве клиента, нужно ли включать кавычки или нет, не имеет значения - если вам нужно подставить значение в поле ввода mode
, вам следует используя для этого переменные, в этом случае (как показано выше) вы бы передавали строковое значение независимо от этого.