Menggunakan direktif komposabel
Buat sebuah direktif memodifikasi perilaku direktif lain.
Fungsionalitas ini memungkinkan penggunaan sebuah direktif, ketika sebaliknya kita tidak bisa menggunakannya karena ketidaksesuaian tipe (yaitu, ketika sebuah direktif tidak dapat diterapkan pada field, karena ia memiliki input yang berbeda dari output field tersebut).
Misalnya, field capabilities mengembalikan [String] (sebuah array of strings), dan direktif @strUpperCase menerima String. Oleh karena itu, menjalankan query berikut mengembalikan error karena ketidaksesuaian tipe:
query {
user(by: {id: 1}) {
capabilities @strUpperCase
}
}Dengan direktif komposabel, kita dapat menggunakan direktif @underEachArrayItem (yang mengiterasi array elemen, dan menerapkan direktif bersarangnya pada setiap elemen) untuk mempersiapkan kondisi sebelum @strUpperCase dieksekusi, membuatnya menerima satu elemen (bertipe String).
Query di atas dapat dipenuhi seperti ini:
query {
user(by: {id: 1}) {
capabilities
@underEachArrayItem
@strUpperCase
}
}Meta direktif
Setiap meta direktif dapat memengaruhi (atau "menyarangkan") beberapa direktif sekaligus. Direktif mana yang terpengaruh ditunjukkan melalui argumen affectDirectivesUnderPos, yang menerima array bilangan bulat positif, masing-masing mendefinisikan posisi relatif direktif yang terpengaruh.
Secara default, argumen affectDirectivesUnderPos memiliki nilai default [1], yang berarti ia akan memengaruhi direktif tepat di sebelahnya.
Pada contoh di bawah, kita memiliki:
@underEachArrayItemadalah meta direktif@strTranslatebersarang di bawah@underEachArrayItem(nilai default implisitaffectDirectivesUnderPos: [1])
{
someField
@underEachArrayItem
@strTranslate
}Pada contoh di bawah, kita sebaliknya memiliki:
@strTranslatedan@strUpperCasebersarang di bawah@underEachArrayItem(sebagaimana ditunjukkan oleh posisi relatif[1, 2]dalam argumenaffectDirectivesUnderPos)
{
someField
@underEachArrayItem(affectDirectivesUnderPos: [1, 2])
@strTranslate
@strUpperCase
}Meta direktif juga dapat disarangkan dalam meta direktif.
Pada contoh di bawah, kita memiliki:
@underEachArrayItemadalah meta direktif paling luar@underJSONObjectPropertybersarang di bawah@underEachArrayItem@strUpperCasebersarang di bawah@underJSONObjectProperty
query UppercaseEntriesInsideObject {
entries: _echo(value: [
{
text: "Hello my friends"
},
{
text: "How do you like this software so far?"
}
])
@underEachArrayItem
@underJSONObjectProperty(by: { key: "text" })
@strUpperCase
}Konfigurasi
Untuk mengaktifkan atau menonaktifkan direktif komposabel dalam skema GraphQL, pergi ke modul "Composable Directives" pada halaman Settings, dan centang/hapus centang kotak Enable composable directives?:

Untuk mengaktifkan atau menonaktifkan direktif komposabel pada endpoint tertentu, pilih opsi yang diinginkan di blok "Composable Directives" dari Schema Configuration yang sesuai:
