Verilerinizi Dizine Ekleyin

Firebase, rastgele bir alt anahtar kullanarak verileriniz üzerinde geçici sorgular yapmanıza olanak tanır. Eğer indeksleri ne olacağını önceden biliyorsanız, aracılığıyla bunları tanımlayabilirsiniz .indexOn sorgu performansını artırmak için Firebase Gerçek Zamanlı Veritabanı Güvenliği Kuralları içinde kural.

Veri İndekslerini Tanımlama

Firebase için güçlü araçlar sunar sipariş ve sorgulama verilerinizi. Özellikle Firebase, herhangi bir ortak alt anahtarı kullanarak bir düğüm koleksiyonunda geçici sorgular yapmanıza olanak tanır. Uygulamanız büyüdükçe bu sorgunun performansı düşer. Ancak, sorgulayacağınız anahtarları Firebase'e bildirirseniz, Firebase bu anahtarları sunucularda indeksleyerek sorgularınızın performansını iyileştirir.

orderByChild ile indeksleme

Bunu açıklamanın en kolay yolu bir örnek aracılığıyladır. Firebase'deki hepimiz dinozorların oldukça havalı olduğu konusunda hemfikiriz. İşte dinozor gerçeklerinin örnek bir veri tabanından bir pasaj. Biz nasıl açıklamak için kullanacak .indexOn ile çalışır orderByChild() .

{
  "lambeosaurus": {
    "height" : 2.1,
    "length" : 12.5,
    "weight": 5000
  },
  "stegosaurus": {
    "height" : 4,
    "length" : 9,
    "weight" : 2500
  }
}

Diyelim ki uygulamamızda dinozorları genellikle isme, boy ve uzunluğa göre sıralamamız gerekiyor ama asla ağırlıklarına göre sıralamamız gerekmiyor. Firebase'e bu bilgileri söyleyerek sorgularımızın performansını iyileştirebiliriz. Dinozorların adı yalnızca anahtar olduğundan, Firebase zaten dinozor adına göre sorguları optimize eder, çünkü bu kaydın anahtarıdır. Biz kullanabilirsiniz .indexOn yanı yükseklik ve uzunluk için optimize sorgularına Firebase anlatmak için:

{
  "rules": {
    "dinosaurs": {
      ".indexOn": ["height", "length"]
    }
  }
}

Diğer kurallar gibi, bir belirtebilirsiniz .indexOn Kurallarınızda herhangi bir düzeyde kuralı. Yukarıdaki örnek için kök düzeyine yerleştirdik çünkü tüm dinozor verileri veritabanının kökünde saklanıyor.

orderByValue ile indeksleme

Bu örnekte, nasıl açılayacağız .indexOn ile çalışır orderByValue() . Aşağıdaki verilerle bir dino spor skorları tablosu oluşturduğumuzu varsayalım:

{
  "scores": {
    "bruhathkayosaurus" : 55,
    "lambeosaurus" : 21,
    "linhenykus" : 80,
    "pterodactyl" : 93,
    "stegosaurus" : 5,
    "triceratops" : 22
  }
}

Biz afiş oluşturmak için orderByValue () kullandığınız için, biz ekleyerek sorguları optimize edebilirsiniz .value bizim de kural /scores düğümü:

{
  "rules": {
    "scores": {
      ".indexOn": ".value"
    }
  }
}