Abonelikler

... 2022-8-10 About 1 min

# 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
  }
}
1
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ür
  • mutation_type: Bu varlığa yapılan eylem. Mutasyon türleri INSERT, UPDATE veya DELETE 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
}
1
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
  }
}
1
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.

Last update: August 10, 2022 00:49