ترجمت واجهة Cloud Translation API‏ هذه الصفحة.
Switch to English

فهرس بياناتك

يتيح لك Firebase إجراء استعلامات مخصصة على بياناتك باستخدام مفتاح فرعي عشوائي. إذا كنت تعرف مسبقًا ما هي الفهارس الخاصة بك ، فيمكنك تحديدها عبر قاعدة .indexOn في قواعد أمان قاعدة بيانات .indexOn Realtime لتحسين أداء الاستعلام.

تحديد فهارس البيانات

يوفر Firebase أدوات فعالة لطلب بياناتك والاستعلام عنها . على وجه التحديد ، يتيح لك Firebase إجراء استعلامات مخصصة على مجموعة من العقد باستخدام أي مفتاح فرعي مشترك. مع نمو تطبيقك ، ينخفض ​​أداء هذا الاستعلام. ومع ذلك ، إذا أخبرت Firebase عن المفاتيح التي ستستفسر عنها ، فسيقوم Firebase بفهرسة هذه المفاتيح على الخوادم ، مما يحسن أداء استعلاماتك.

الفهرسة مع orderByChild

أسهل طريقة لشرح ذلك من خلال مثال. نتفق جميعًا في Firebase على أن الديناصورات رائعة جدًا. إليك مقتطف من قاعدة بيانات نموذجية لحقائق الديناصورات. .indexOn لشرح كيفية عمل orderByChild() مع orderByChild() .

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

لنتخيل أنه في تطبيقنا ، نحتاج غالبًا إلى ترتيب الديناصورات بالاسم والطول والطول ، ولكن ليس بالوزن أبدًا. يمكننا تحسين أداء استعلاماتنا بإخبار Firebase بهذه المعلومات. نظرًا لأن اسم الديناصورات هو مجرد مفاتيح ، فإن Firebase يعمل بالفعل على تحسين الاستعلامات حسب اسم الديناصورات ، نظرًا لأن هذا هو مفتاح السجل. يمكننا استخدام .indexOn لإخبار .indexOn بتحسين استعلامات الطول والطول أيضًا:

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

مثل القواعد الأخرى ، يمكنك تحديد قاعدة .indexOn على أي مستوى في القواعد الخاصة بك. لقد وضعناها في مستوى الجذر للمثال أعلاه لأن جميع بيانات الديناصورات مخزنة في جذر قاعدة البيانات.

الفهرسة مع orderByValue

في هذا المثال، سنقوم شرح كيفية .indexOn يعمل مع orderByValue() . لنفترض أننا نصنع ليدربورد لنتائج دينو سبورتس بالبيانات التالية:

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

منذ نستخدمه orderByValue () لإنشاء المتصدرين، يمكننا تحسين الاستعلامات لدينا بإضافة .value حكم في موقعنا /scores العقدة:

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