अपना डेटा इंडेक्स करें

फायरबेस आपको मनमानी चाइल्ड कुंजी का उपयोग करके अपने डेटा पर एड-हॉक क्वेरी करने की अनुमति देता है। यदि आप पहले से जानते हैं कि आपके अनुक्रमित हो जाएगा, तो आप उन्हें के माध्यम से परिभाषित कर सकते हैं .indexOn क्वेरी प्रदर्शन में सुधार करने के लिए अपने Firebase रीयलटाइम डाटाबेस सुरक्षा नियमों में नियम।

डेटा इंडेक्स को परिभाषित करना

Firebase के लिए शक्तिशाली उपकरण प्रदान करता है आदेश और क्वेरी करने के लिए अपने डेटा। विशेष रूप से, फायरबेस आपको किसी भी सामान्य चाइल्ड कुंजी का उपयोग करके नोड्स के संग्रह पर एड-हॉक क्वेरी करने की अनुमति देता है। जैसे-जैसे आपका ऐप बढ़ता है, इस क्वेरी का प्रदर्शन कम होता जाता है। हालांकि, अगर आप फायरबेस को उन चाबियों के बारे में बताते हैं जिनसे आप पूछताछ कर रहे हैं, तो फायरबेस सर्वर पर उन चाबियों को अनुक्रमित करेगा, जिससे आपके प्रश्नों के प्रदर्शन में सुधार होगा।

ऑर्डरबायचाइल्ड के साथ इंडेक्सिंग

इसे समझाने का सबसे आसान तरीका एक उदाहरण है। फायरबेस में हम सभी सहमत हैं कि डायनासोर बहुत अच्छे हैं। डायनासोर तथ्यों के नमूना डेटाबेस से यहां एक स्निपेट दिया गया है। हम इसका इस्तेमाल कैसे समझाने के लिए होगा .indexOn साथ काम करता है orderByChild()

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

आइए कल्पना करें कि हमारे ऐप में, हमें अक्सर डायनासोर को नाम, ऊंचाई और लंबाई से ऑर्डर करने की आवश्यकता होती है, लेकिन वजन से कभी नहीं। हम Firebase को यह जानकारी बताकर अपने प्रश्नों के प्रदर्शन में सुधार कर सकते हैं। चूंकि डायनासोर के नाम केवल कुंजी हैं, फायरबेस पहले से ही डायनासोर के नाम से प्रश्नों के लिए अनुकूलित करता है, क्योंकि यह रिकॉर्ड की कुंजी है। हम उपयोग कर सकते हैं .indexOn ऊंचाई और लंबाई के लिए अनुकूलन जिज्ञासाओं के साथ करने के लिए Firebase बताने के लिए:

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

अन्य नियमों की तरह, आप एक निर्दिष्ट कर सकते हैं .indexOn अपने नियमों में किसी भी स्तर पर नियम। हमने इसे ऊपर के उदाहरण के लिए रूट स्तर पर रखा है क्योंकि सभी डायनासोर डेटा डेटाबेस के रूट पर संग्रहीत हैं।

ऑर्डरबायवैल्यू के साथ इंडेक्सिंग

इस उदाहरण में, हम दिखाना है कि कैसे .indexOn साथ काम करता है orderByValue() । मान लें कि हम निम्नलिखित डेटा के साथ डिनो स्पोर्ट्स स्कोर का लीडरबोर्ड बना रहे हैं:

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

हम लीडरबोर्ड बनाने के लिए orderByValue () का उपयोग कर रहे हैं, हम एक जोड़कर हमारे प्रश्नों का अनुकूलन कर सकते .value हमारे पर शासन /scores नोड:

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