"Field to Input" Kullanımı
Bir alanın değerini alın, üzerinde işlem yapın ve tümünü aynı query içinde başka bir alana girdi olarak verin.
Nasıl kullanılır
Değeri alınacak alan, "Variable" sözdizimi olan $ ve alan takma adı ya da adından önce __ kullanılarak referans gösterilir. (Örneğin, excerpt alanının değeri $__excerpt olarak referans gösterilir.) İkinci alanın yanıtı, başka bir alana girdi olarak kullanılabilir:
{
posts {
excerpt
# "excerpt" adlı önceki alana referans
isEmptyExcerpt: _isEmpty(value: $__excerpt)
# "isEmptyExcerpt" takma adlı önceki alana referans
isNotEmptyExcerpt: _not(value: $__isEmptyExcerpt)
}
}Yanıt şu şekilde olacaktır:
{
"data": {
"posts": [
{
"excerpt": "Some post excerpt",
"isEmptyExcerpt": false,
"isNotEmptyExcerpt": true
},
{
"excerpt": "",
"isEmptyExcerpt": true,
"isNotEmptyExcerpt": false
}
]
}
}Alan, yalnızca aynı düğümdeki önceki kardeş alanlar tarafından referans gösterilebilir. Aşağıdaki queries ÇALIŞMAYACAKTIR:
# Bu başarısız olur çünkü alana referans, alandan önce değil sonra görünmelidir
{
posts {
isEmptyExcerpt: _isEmpty(value: $__excerpt)
excerpt
}
}
# Bu başarısız olur çünkü referans aynı düğüm içinde yapılmalıdır
{
posts {
excerpt
}
isEmptyExcerpt: _isEmpty(value: $__excerpt)
}Alan ayrıca bir direktif argümanından da referans gösterilemez (bunun için @passOnwards direktifini kullanın):
# Bu başarısız olur çünkü referans yalnızca bir alana girdi olarak kullanılabilir, direktife değil
{
posts {
hasComments
title @include(if: $__hasComments)
}
}Örnekler
Gönderinin özeti boşsa bunun yerine başlığı kullanın:
{
posts {
title
originalExcerpt: excerpt
isEmptyExcerpt: _isEmpty(value: $__originalExcerpt)
excerpt: if(condition: $__isEmptyExcerpt, then: $__title, else: $__originalExcerpt)
}
}Harici bir REST uç noktasından veri alın ve ihtiyaçlarınıza göre bu veriyi işleyin.
{
externalData: _getJSON(url: "https://example.com/rest/some-external-endpoint")
userName: _extract(object: $__externalData, path: "data.user.name")
userLastName: _extract(object: $__externalData, path: "data.user.surname")
}Bu şunları üretecektir:
{
"data": {
"externalData": {
"data": {
"user": {
"id": 1,
"name": "Leo",
"surname": "Loso"
}
}
},
"userName": "Leo",
"userLastName": "Loso"
}
}externalData üzerinde @remove direktifini kullanarak harici uç nokta kaynak verilerinin yanıtta yazdırılmasını da önleyebiliriz:
{
externalData: _getJSON(url: "https://example.com/rest/some-external-endpoint") @remove
userName: _extract(object: $__externalData, path: "data.user.name")
userLastName: _extract(object: $__externalData, path: "data.user.surname")
}Bu artık şunu üretecektir:
{
"data": {
"userName": "Leo",
"userLastName": "Loso"
}
}Kullanıcının e-postasından bahseden her kullanıcının gönderilerini alın:
{
users {
email
posts(filter: { search: $__email }) {
id
title
}
}
}optionValue alanı aracılığıyla to ve from e-postalarını tanımlayarak bir bülten gönderin:
mutation {
fromEmail: optionValue(name: "admin_email")
toEmail: optionValue(name: "subscribers_email_list_recipient_address")
_sendEmail(
from: {
email: $__fromEmail
}
to: $__toEmail
subject: "Weekly summary"
messageAs: {
html: "..."
}
)
}