Abonelikler
# Abonelikler
# GraphQL Aboneliği Nedir
SubQuery artık Graphql Aboneliklerini de destekliyor. Sorgular gibi, abonelikler de veri almanızı sağlar. Sorguların aksine abonelikler, zamanla sonuçlarını değiştirebilen uzun süreli işlemlerdir.
Abonelikler, istemci uygulamanızın verileri değiştirmesini veya bu değişiklik meydana gelir gelmez veya yeni veriler kullanılabilir olduğunda bazı yeni verileri göstermesini istediğinizde çok kullanışlıdır. Abonelikler, değişiklikler için Alt Sorgu projenize abone olmanıza olanak tanır.
Abonelikler hakkında daha fazla bilgiyi buradan okuyun (opens new window)
# Bir Varlığa Nasıl Abone Olunur
GraphQL aboneliğinin temel örneği, herhangi bir yeni varlık oluşturulduğunda bildirilmesidir. Aşağıdaki örnekte, Transfer
varlığına abone oluyoruz ve bu tabloda herhangi bir değişiklik olduğunda bir güncelleme alıyoruz.
GraphQL uç noktasını aşağıdaki gibi sorgulayarak aboneliği oluşturabilirsiniz. Ardından bağlantınız, Transfer
varlık tablosunda yapılan tüm değişikliklere abone olacaktır.
subscription {
transfer {
id
mutation_type
_entity
}
}
2
3
4
5
6
7
Sorgunuzdaki varlığın gövdesi, Transfer
tablosu güncellendiğinde aboneliğiniz aracılığıyla hangi verileri almak istediğinizi belirtir:
id
: Değişen varlığın kimliğini döndürürmutation_type
: Bu varlığa yapılan eylem. Mutasyon türleriINSERT
,UPDATE
veyaDELETE
olabilir_entity
: varlığın kendisinin JSON biçimindeki değeri.
# Filtreleme
Aboneliklere ilişkin filtrelemeyi de destekliyoruz; bu, bir müşterinin yalnızca bu veriler veya mutasyon belirli kriterleri karşılaması durumunda güncellenmiş abonelik verilerini alması gerektiği anlamına gelir.
Desteklediğimiz iki tür filtre vardır:
id
: Yalnızca belirli bir varlığı (kimlik tarafından belirtilen) etkileyen değişiklikleri döndürmek için filtreleyin.mutation_type
: Yalnızca yapılan aynı mutasyon türü bir güncelleme döndürür.
Bir Bakiyeler
varlığımız olduğunu ve her hesabın bakiyesini kaydettiğini varsayalım.
tür Bakiyeler {
id: ID! # sbirinin hesabı, ör. 15rb4HVycC1KLHsdaSdV1x2TJAmUkD7PhubmhL3PnGv7RiGY
amount: Int! # bu hesabın bakiyesi
}
2
3
4
Belirli bir hesabı etkileyen herhangi bir bakiye güncellemesine abone olmak istiyorsak, abonelik filtresini aşağıdaki gibi belirtebiliriz:
abonelik {
balances(
id: "15rb4HVycC1KLHsdaSdV1x2TJAmUkD7PhubmhL3PnGv7RiGY"
mutation: UPDATE
) {
id
mutation_type
_entity
}
}
2
3
4
5
6
7
8
9
10
mutasyon
filtresinin INSERT
, UPDATE
veya DELETE
seçeneklerinden biri olabileceğini unutmayın
Bu işlevleri kullanmak için hem düğüm hem de sorgu hizmetinde --subscription
işaretini etkinleştirmeniz gerektiğini lütfen unutmayın.
Abonelik özelliği, doğrudan listelenen GraphQL uç noktasını aradığınızda SubQuery'nin yönetilen hizmetinde çalışır. Tarayıcı içi GraphQL oyun alanında çalışmayacaktır.