Graphql şemeları oluştururken zorunlu alanlara non nullable denir. Bu alanların tanımlarnının sonlarına bir ünlem ! getirilerek belirtilirler. Bu şekilde tanımlanmış alanlar bir sorgu ile çağrıldığı zaman boş bırakılamaz ve zorunlu olarak bir bilgi verecek şekilde gönderilirler. Aksi halde hata oluşur.
Non Nullable Alan Oluşturma
Eğer bir şema içerisinde bir alan non nullable olarak tanımlanacaksa tanım bilgisinin sonuna ünlem işareti konulur. Şimdi bir Kitap tanımlaması yapalım ve ismini zorunlu tutalım.
const typeDef = `#graphql
type Kitap {
isim: String!
yazar: String
yayinevi: String
}
`Tanımlamada kullanılan kitap ismini tanımına bakalım isim: String! alanın tip bilgisinin sonuna bir adet ! işareti koyarak bu alanın non nullable olduğunu belirtmiş olduk.
Sorgu İçerisinde Bir Bilgiyi Non Nullable Olarak Tanımlamak
Eğer bir sorgu içerisinde gelen bilginin zorunlu olmasını istiyorsak, mesela kitap bilginin zorunlu olması gerekiyorsa bu durumda Query tanımlaması içerisinde bu bilginin sonuna ünlem ! işareti konulmalıdır.
type Query {
kitap: Kitap!
}Yukarıdaki örnek işleme alındığında bir kitap arandığında geriye boş / null olarak kitap bilgisi geldiğinde bir hata oluşacaktır. Bu tanımlama kitap bilgisinin zorunlu olduğunu belirtir.
Graphql non-nullable Array
Eğer geri dönderilecek sonuç bir array içeriyorsa ve bu dizinin boş olmasını istenmiyorsa. Bu array non-nullable olarak tanımlanabilir. Bunun için tanımın sonuna bir ünlem işareti koymak yeterlidir. Örnek verecek olursak. Eğer bir kitap listesinin geri dönmesini istiyorsak ve bu listenin boş olmaması gerekiyorsa şu şekilde belirtebiliriz.
type Query {
kitap: [Kitap]!
}Tanımlamayı [Kitap]! şeklinde yaptığımız zaman bu dizinin boş olamayacağını ve en az bir Kitap bilgisi içermesi gerektiğini belirtmiş oluyoruz.
Cannot return null for non-nullable field Hatası
Eğer non nullable olan bir alan boş olarak veya null değeri ile gönderilmek istenirse Cannot return null for non-nullable field hatası oluşur. Bu hatanın oluşmasını önlemek için ilgili alanın bir değer içerecek şekilde gönderilmesini sağlamak gereklidir.
Eğer bu mümkün değilse bu alanın non nullable olarak tanımlanmasını kaldırmak gerekebilir. Tabii ki bu mümkünse.
Sonuç
Bazı alanların zorunlu tutulması ve istek yapıldığı zaman bu alanın bir değer içermesi gerekebilir. Bu tip alanlar Graphqlde non nullable olarak tanımlanıyor.
Sormak istediklerinizi ve eklemek istediklerinizi lütfen yorumlara ekleyiniz.
