Çok Alanlı Direktiflerin Kullanımı
Çok alanlı direktif, yalnızca bir alan yerine birden fazla alana uygulanabilen bir direktiftir. Etkinleştirildiğinde, tüm direktiflere affectAdditionalFieldsUnderPos adlı bir argüman eklenir; bu argüman aracılığıyla direktifin uygulanacağı ek alanların göreli konumları belirtilebilir.
Örneğin, aşağıdaki queries içinde @strTranslate direktifi yalnızca content alanına uygulanmaktadır:
{
posts {
excerpt
content @strTranslate
}
}excerpt alanına da @strTranslate direktifi uygulanabilir; bunun için affectAdditionalFieldsUnderPos direktif argümanına [1] değeri eklenir (1, @strTranslate direktifinden excerpt alanının göreli konumudur):
{
posts {
excerpt
content
@strTranslate(
affectAdditionalFieldsUnderPos: [1]
)
}
}Eklenebilecek alan sayısı sınırlı değildir. Bu queries içinde dateStr de çevrilmektedir:
{
posts {
dateStr
excerpt
content
@strTranslate(
affectAdditionalFieldsUnderPos: [1, 2]
)
}
}Direktifin doğal olarak uygulandığı alan (yukarıdaki tüm queries içinde content gibi) argümanda belirtilmemelidir.
Yukarıdaki queries içinde @strTranslate direktifinden önceki alanlara olan göreli konumlar şunlardır:
- Konum
2:dateStr - Konum
1:excerpt - Konum
0:content<= Örtük, her zaman uygulanır
Kullanım Senaryoları
Bu özellik için iki temel kullanım senaryosu vardır:
- Performans
- Genişletilmiş işlevsellik
Performans
Harici API'lere çağrı yapan direktiflerde, daha az istek yapıldıkça çözümleme daha hızlı gerçekleşir.
Bu durum, Google Translate API'sine bağlanan @strTranslate direktifi için geçerlidir. Normalde, bir gönderi listesinden content ve excerpt alanlarını çevirmek için queries şu şekilde olurdu:
query {
posts {
excerpt @strTranslate
content @strTranslate
}
}@strTranslate iki kez eklenerek bu queries, Google Translate API'sine iki istek yapar (biri excerpt için tüm değerleri çevirmek, diğeri content için tüm değerleri çevirmek amacıyla).
Multi-Field Directives özelliği sayesinde, aşağıdaki queries de hem content hem de excerpt alanlarının tüm değerlerini çevirir; ancak bunun yerine Google Translate API'sine yalnızca tek bir istek gönderir:
query {
posts {
excerpt
content
@strTranslate(
affectAdditionalFieldsUnderPos: [1]
)
}
}Genişletilmiş İşlevsellik
Ek alanlar alan direktifler, ek hesaplamalar sağlayabilir.
Örneğin, @export direktifi normalde oturum açmış kullanıcının adı gibi tek bir alanın değerini dışa aktarır:
query GetLoggedInUserName {
me {
name @export(as: "userName")
}
}affectAdditionalFieldsUnderPos argümanı aracılığıyla @export, birden fazla alan alabilir ve bu alanları girdi olarak içeren bir sözlük dışa aktarır:
query GetLoggedInUserNameAndSurname {
me {
name
surname
@export(
as: "userProps"
affectAdditionalFieldsUnderPos: [1]
)
}
}@export artık $userProps değişkeninde şu değeri üretecektir:
{
"name": "Leo",
"surname": "Loso"
}Yapılandırma
GraphQL şemasında çok alanlı direktifleri etkinleştirmek veya devre dışı bırakmak için Ayarlar sayfasındaki "Multi-Field Directives" modülüne gidin ve Enable multi-field directives? onay kutusunu işaretleyin ya da işaretini kaldırın:

Belirli bir uç noktada çok alanlı direktifleri etkinleştirmek veya devre dışı bırakmak için ilgili Schema Configuration içindeki "Multi-Field Directives" bloğundan istenen seçeneği belirleyin:
