Похоже, вы объединяете подпись операции и подпись поля. Самая первая строка запроса GraphQL имеет следующий формат:
[ operationType ] [ operationName ] [( variableDefinitions )]
Если тип операции опущен, предполагается, что он равен query
(в отличие от mutation
или subscription
). Имя операции также необязательно. Рекомендуется всегда включать и при написании запросов.
Если у есть переменные, их определения следуют за именем операции и принимают следующий формат:
имя : тип [= defaultValue ]
Имена переменных всегда начинаются с $
. После объявления они могут использоваться вместо любого аргумента внутри вашего запроса. Как и определения переменных, аргументы поля также заключены в круглые скобки, но их формат просто:
имя_ аргумента : значение
Итак, запрос может выглядеть так:
query SomeArbitraryName ($foo: String, $bar: Int!) {
getSomething (name: $foo) {
name
quxs (max: $bar)
}
}
Здесь мы определили две переменные ($foo
и $bar
). $foo
используется для аргумента name
для запроса getSomething
, а $bar
используется в качестве аргумента max
для поля quxs
. Обратите внимание, что типы, которые вы определяете для каждой переменной, имеют большое значение - я могу использовать только $foo
в качестве замены для аргументов типа String
(в отличие от другого скаляра или типа или String!
или [String]
)
Обычно вы получаете одну переменную для каждого аргумента, поэтому принято просто использовать имя аргумента для имени переменной и просто добавить $
, но имя переменной может быть любым, что вы захотите.
Собрав все вместе, ваш запрос должен выглядеть примерно так:
query WhateverNameYouLike ($_id: String) {
product(_id: $_id) {
brand
}
}
Вы можете изменить имя переменной на что-то другое, например $productId
, но вам также необходимо изменить способ ссылки на него внутри Query
компонента