Query FunctionsУсловная манипуляция полями
Условная манипуляция полями
Included in the “Power Extensions” bundle
Добавление мета-директив @if и @unless в схему GraphQL для условного выполнения вложенной директивы над полем.
@if
@if выполняет вложенные директивы только в том случае, если условие имеет значение true.
В этом запросе пользователи "Leo" и "Peter" получают имена, преобразованные в верхний регистр, поскольку они входят в массив «особых пользователей», тогда как "Martin" — нет:
query {
users {
name
@passOnwards(as: "userName")
@applyField(
name: "_inArray"
arguments: {
value: $userName
array: ["Leo", "John", "Peter"]
}
passOnwardsAs: "isSpecialUser"
)
@if(
condition: $isSpecialUser
)
@strUpperCase
}
}...что даёт результат:
{
"data": {
"users": [
{
"name": "LEO"
},
{
"name": "Martin"
},
{
"name": "PETER"
}
]
}
}@unless
Аналогично @if, но выполняет вложенные директивы, когда условие равно false.
В этом запросе именно пользователь "Martin" получает имя, преобразованное в верхний регистр, тогда как остальные — нет:
query {
users {
name
@passOnwards(as: "userName")
@applyField(
name: "_inArray"
arguments: {
value: $userName
array: ["Leo", "John", "Peter"]
}
passOnwardsAs: "isSpecialUser"
)
@unless(
condition: $isSpecialUser
)
@strUpperCase
}
}...что даёт результат:
{
"data": {
"users": [
{
"name": "Leo"
},
{
"name": "MARTIN"
},
{
"name": "Peter"
}
]
}
}