Birleştirilebilir direktifleri kullanma
Bir direktifin başka bir direktifin davranışını değiştirmesini sağlayın.
Bu işlevsellik, bir direktifi kullanmanın aksi takdirde mümkün olmadığı durumlarda kullanmayı sağlar; tür uyumsuzluğu nedeniyle (yani bir direktif, alanın çıktısından farklı bir girdi aldığı için alana uygulanamadığında).
Örneğin, capabilities alanı [String] (bir dize dizisi) döndürür ve @strUpperCase direktifi String alır. Bu nedenle, aşağıdaki query çalıştırıldığında tür uyumsuzluğu nedeniyle bir hata döner:
query {
user(by: {id: 1}) {
capabilities @strUpperCase
}
}Birleştirilebilir direktiflerle, @strUpperCase çalıştırılmadan önce zemin hazırlamak amacıyla @underEachArrayItem direktifini (bir öğe dizisi üzerinde yineleyerek iç içe direktifini her birine uygulayan) kullanabilir ve ona tek bir öğe (String türünde) almasını sağlayabiliriz.
Yukarıdaki query şu şekilde karşılanabilir:
query {
user(by: {id: 1}) {
capabilities
@underEachArrayItem
@strUpperCase
}
}Meta direktifler
Her meta direktif, aynı anda birden fazla direktifi etkileyebilir (veya "iç içe geçirebilir"). Hangi direktiflerin etkilendiği, pozitif tam sayılardan oluşan bir dizi alan affectDirectivesUnderPos argümanı aracılığıyla belirtilir; her bir sayı, etkilenen direktifin göreli konumunu tanımlar.
Varsayılan olarak, affectDirectivesUnderPos argümanının varsayılan değeri [1]'dir; bu, hemen yanındaki direktifi etkileyeceği anlamına gelir.
Aşağıdaki örnekte:
@underEachArrayItemmeta direktiftir@strTranslate,@underEachArrayItemaltında iç içe geçmiştir (örtük varsayılan değeraffectDirectivesUnderPos: [1])
{
someField
@underEachArrayItem
@strTranslate
}Aşağıdaki örnekte ise:
@strTranslateve@strUpperCase,@underEachArrayItemaltında iç içe geçmiştir (affectDirectivesUnderPosargümanındaki[1, 2]göreli konumlarıyla belirtildiği gibi)
{
someField
@underEachArrayItem(affectDirectivesUnderPos: [1, 2])
@strTranslate
@strUpperCase
}Meta direktifler, meta direktifler içinde de iç içe geçirilebilir.
Aşağıdaki örnekte:
@underEachArrayItemen üst meta direktiftir@underJSONObjectProperty,@underEachArrayItemaltında iç içe geçmiştir@strUpperCase,@underJSONObjectPropertyaltında iç içe geçmiştir
query UppercaseEntriesInsideObject {
entries: _echo(value: [
{
text: "Hello my friends"
},
{
text: "How do you like this software so far?"
}
])
@underEachArrayItem
@underJSONObjectProperty(by: { key: "text" })
@strUpperCase
}Yapılandırma
GraphQL şemasında birleştirilebilir direktifleri etkinleştirmek veya devre dışı bırakmak için Ayarlar sayfasındaki "Composable Directives" modülüne gidin ve Enable composable directives? onay kutusunu işaretleyin/kaldırın:

Belirli bir uç noktada birleştirilebilir direktifleri etkinleştirmek veya devre dışı bırakmak için, ilgili Schema Configuration'daki "Composable Directives" bloğundan istediğiniz seçeneği seçin:
