Şemayı yapılandırma
Şemayı yapılandırma"Field to Input" Kullanımı

"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: "..."
    }
  )
}