بواسطة شارلين خان
يشاركسقسقةيشاركالبريد الإلكتروني

قم بحل خطأ "طلب البحث يتطلب فهرسًا" واحصل على استعلامات Firebase تعمل بشكل متناغم مع تطبيق Angular الخاص بك.

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

يمكنك أيضًا الاستعلام عن قاعدة بيانات Firebase من تطبيق Angular الخاص بك. يتطلب Firebase فهرسة مجموعات الحقول لاستعلام يستخدم حقولاً متعددة. يتيح ذلك لـ Firebase البحث عنها بسهولة عند استدعاء الاستعلام في وقت آخر.

قم بإعداد تطبيق Angular وقاعدة بيانات Firebase

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

  1. إذا لم يكن لديك تطبيق Angular موجود ، فيمكنك استخدام ملف نانوغرام جديد الأمر لإنشاء مشروع جديد مع جميع ملفات Angular الضرورية.
    نانوغرام الجديدالجديد-تطبيق مستطيل
  2. إنشاء قاعدة بيانات Firebase الجديدة لتطبيق Angular
    instagram viewer
    عن طريق تسجيل الدخول إلى Firebase واتباع المطالبات لإنشاء مشروع Firebase جديد.
  3. في قاعدة بيانات Cloud Firestore الجديدة ، أنشئ مجموعتين (تُعرفان أيضًا بالجداول) لكل من "المنتج" و "المورد". يمكن للمورد توفير منتجات متعددة. يتم أيضًا توصيل كل منتج بالمورد باستخدام حقل "معرف المورد".
  4. أدخل البيانات التالية في جدول "المنتج". أدخل حقول الاسم ومعرّف المنتج ومعرّف المورد كسلاسل. أدخل السعر وحقول التخزين كأرقام.
    معرف المستند مجالات
    المنتج 1
    • الاسم: "شرائط"
    • السعر: 12.99.000
    • المخزون: 10
    • معرّف المنتج: "P1"
    • معرف المورد: "S1"
    المنتج 2
    • الاسم: "بالونات"
    • السعر: 1.5
    • inStock: 2
    • معرّف المنتج: "P2"
    • معرف المورد: "S1"
    المنتج 3
    • الاسم: "ورق"
    • السعر: 2.99.000
    • المخزون: 20
    • معرّف المنتج: "P3"
    • معرف المورد: "S1"
    المنتج 4
    • الاسم: "جدول"
    • السعر: 199
    • inStock: 1
    • معرّف المنتج: "P4"
    • معرف المورد: "S2"
    إليك مثال يوضح كيف يجب أن يبدو هذا:
  5. أدخل البيانات التالية في جدول "المورد". أدخل جميع الحقول كسلاسل.
    معرف المستند مجالات
    المورد 1
    • الاسم: "مورد فنون وحرف يدوية"
    • الموقع: "كاليفورنيا ، الولايات المتحدة الأمريكية"
    • معرف المورد: "S1"
    المورد 2
    • الاسم: "جداول مذهلة"
    • الموقع: "سيدني ، أستراليا"
    • معرف المورد: "S2"
    إليك الشكل الذي يجب أن يبدو عليه إدخال المورد 1:
  6. تثبيت الزاوي / النار في تطبيقك.
    npm أنا @ مستطيل/fire
  7. في Firebase ، افتح ملف إعدادات المشروع. انقر فوق شعار قوسين الزاوية لإضافة Firebase إلى تطبيق Angular الخاص بك.
  8. سيزودك Firebase بتفاصيل التكوين التي يمكنك استخدامها لتوصيل تطبيق Angular بقاعدة بيانات Firebase.
  9. استبدل المحتويات بتنسيق البيئات / البيئة مع الكود التالي. سوف تحتاج إلى تغيير القيم في الداخل FirebaseConfig. قم بتغييرها لتتطابق مع التكوين الذي قدمه لك Firebase في الخطوة السابقة.
    يصدّرمقدار ثابت البيئة = {
    إنتاج: خاطئة,
    firebaseConfig: {
    apiKey: "AIzaSyBzVyXBhDlvXQEltNkE9xKq-37UBIanDlM "،
    المؤلف: "muo-firebase-queries.firebaseapp.com" ،
    معرّف المشروع: "muo-firebase-queries" ،
    StorageBucket: "muo-firebase-queries.appspot.com" ،
    messagingSenderId: "569911365044",
    معرف التطبيق: "1:569911365044: web:9557bfef800caa5cdaf6e1 "
    }
    };
  10. قم باستيراد البيئة من الأعلى ، جنبًا إلى جنب مع وحدات Angular Firebase إلى src / app / app.module.ts.
    يستورد { بيئة } من "../environment/environment" ؛
    يستورد {AngularFireModule} من "@ الزاوي / النار / المتوافقة" ؛
    يستورد {AngularFirestoreModule} من "@ الزاوي / النار / المواطنة / متجر النار" ؛
  11. أضف وحدات Firebase إلى مصفوفة الاستيراد:
    AngularFirestoreModule ،
    AngularFireModule.initializeApp(بيئة.firebaseConfig)

كيفية كتابة استعلام Firebase معقد في ملف الخدمات

يمكنك الاستعلام عن الجداول في قاعدة بيانات Firebase باستخدام ملف الخدمات.

  1. قم بإنشاء مجلد جديد يسمى "الخدمات". داخل المجلد ، قم بإنشاء ملف جديد يسمى "service.ts".
  2. أضف AngularFirestore import ، والمنشئ ، والفئة إلى الملف.
    يستورد {قابل للحقن} من "@ الزاوي / الأساسية" ؛
    يستورد {AngularFirestore} من "@ الزاوي / النار / المواطن / فايرستور" ؛
    تضمين التغريدة({
    المقدمة في: 'جذر'
    })
    يصدّرصف دراسيخدمة{
    البناء(ديسيبل خاص: AngularFirestore) {}
    }
  3. في مثال الاستعلام هذا ، قم بإدراج المنتجات بناءً على اسم المورد. بالإضافة إلى ذلك ، قم بتصفية القائمة لعرض العنصر الذي يحتوي على أقل مخزون فقط. نظرًا لأن Firebase ليس قاعدة بيانات منطقية ، فسنحتاج إلى الاستعلام عن جدولين منفصلين باستخدام أكثر من استعلام واحد.
  4. للقيام بذلك ، قم بإنشاء وظيفة جديدة تسمى getSupplier ()، للتعامل مع الاستعلام الأول. ستعيد الوظيفة الصف في جدول "المورد" الذي يتطابق مع الاسم.
    getSupplier (الاسم: سلسلة) {
    إرجاعالجديديعد((حل) => {
    مجموعة db.collection ('المورد'، المرجع => المرجع أين ('اسم', '=='، name)). valueChanges (). Subscribe (مورد => حل (المورد))
    })
    }
  5. قم بإنشاء وظيفة أخرى تسمى getProducts FromSupplier (). يستعلم هذا الاستعلام عن قاعدة البيانات للمنتجات المرتبطة بمورد معين. بالإضافة إلى ذلك ، يقوم الاستعلام أيضًا بطلب النتائج حسب حقل "inStock" ويعرض فقط السجل الأول في القائمة. بمعنى آخر ، سيعيد المنتج لمورد معين ، بأقل عدد "inStock".
    getProductsFromSupplier (مورد معرف: سلسلة) {
    إرجاعالجديديعد((حل) => {
    مجموعة db.collection ('منتج'، المرجع => المرجع أين ('واسم المورد', '=='، معرف المورد).'في الأوراق المالية') .startAt (0) .limit (1)). valueChanges (). subscribe (product => حل (المنتج))
    })
    }
  6. في ال src / app / app.component.ts ملف ، استيراد الخدمة.
    يستورد { خدمة } من "src / التطبيق / الخدمات / الخدمة" ؛
  7. أضف مُنشئًا داخل فئة AppComponent ، وأضف الخدمة إلى المُنشئ.
    البناء(خدمة خاصة: خدمة) {}
  8. قم بإنشاء وظيفة جديدة تسمى getProductStock(). ستعمل هذه الوظيفة على طباعة المنتج بأقل مخزون يوفره مورد معين. تأكد من استدعاء الوظيفة الجديدة في ngOnInit () وظيفة ، ويعلن عن متغير لتخزين النتيجة.
    المنتجات: أي ؛
    ngOnInit (): فارغ {
    هذه.getProductStock () ،
    }
    غير متزامن getProductStock () {

    }

  9. داخل getProductStock () وظيفة ، استخدم الاستعلامين من ملف الخدمات. استخدم الاستعلام الأول للحصول على سجل مورد بناءً على الاسم. بعد ذلك ، استخدم معرف المورد كوسيطة للاستعلام الثاني ، والذي سيجد المنتج من هذا المورد ، مع أدنى مخزون.
    يترك المورد = انتظرهذه.service.getSupplier ("مورد الفنون والحرف") ؛ 
    هذه. المنتجات = انتظرهذه.service.getProductsFromSupplier (المورد [0].واسم المورد)؛
  10. قم بإزالة المحتويات الموجودة في ملف src / app / app.component.html ملف واستبداله بما يلي:
    <h2> المنتجات بأقل مخزون من "مورد الفنون والحرف"</h2>
    <div * ngFor ="اسمحوا عنصر من المنتجات">
    <ص> الاسم: {{item.name}} </ ص>
    <ص> الرقم المتوفر: {{item.inStock}} </ ص>
    <ص> السعر: $ {{item.price}} </ ص>
    </div>
  11. قم بتشغيل التطبيق في متصفح الويب باستخدام امتداد يخدم ng يأمر.
    يخدم ng
  12. افتح موقع الويب الخاص بك باستخدام أي متصفح ويب. بشكل افتراضي ، يستضيف Angular التطبيق في المضيف المحلي: 4200.
  13. لن يتم عرض بياناتك على الشاشة بشكل صحيح. انقر بزر الماوس الأيمن فوق صفحة الويب وانقر فوق فحص لفتح أدوات مطور المتصفح الخاص بك.
  14. انتقل إلى ملف وحدة التحكم التبويب. سيظهر خطأ لإعلامك بأن الاستعلام سيتطلب فهرسًا.

كيفية إنشاء فهرس مركب لاستعلامك

يُنشئ Firebase فهارس لطلبات البحث التي يمكن أن تحتوي على حقول متعددة. بحسب ال وثائق Firebase، يعمل هذا كخريطة ، بحيث يمكن لـ Firebase البحث عن موقع الحقول الموجودة في الاستعلام.

  1. في وحدة التحكم ، انقر فوق الارتباط الذي يعرضه الخطأ.
  2. سجّل الدخول إلى حسابك في Firebase.
  3. ستظهر مطالبة تطلب منك إنشاء فهرس لاستعلام Firebase. انقر فوق إنشاء فهرس.
  4. سيقوم Firebase بفهرسة الحقول التي يستخدمها استعلامك. انتظر بضع دقائق حتى تتغير الحالة من "مبنى" إلى "ممكّن".
  5. قم بتحديث متصفح الويب الخاص بك. سيتم تشغيل الاستعلام وإرجاع النتيجة الصحيحة على الصفحة الرئيسية. إذا فتحت مصحح أخطاء وحدة التحكم باستخدام أدوات مطور المستعرض الخاص بك ، فمن المفترض ألا يكون الخطأ موجودًا.

الاستعلام عن قاعدة بيانات Firebase الخاصة بك

يسمح لك Firebase بإنشاء قاعدة بيانات NoSQL في السحابة. يمكنك بعد ذلك دمج قاعدة البيانات هذه في تطبيقات Angular التي تقوم بتطويرها. يمكنك إنشاء أنواع مختلفة من الاستعلامات لتخزين البيانات أو تحديثها أو حذفها. يمكنك أيضًا إنشاء استعلام يستخدم عدة حقول في وقت واحد.

عند إنشاء استعلام يستخدم حقولاً متعددة ، ستؤدي محاولة تشغيله إلى ظهور خطأ. ستحتاج إلى فهرسة تركيبة الحقول المستخدمة في الاستعلام ، بحيث يمكن لـ Firebase البحث عنها بسهولة كلما قمت بتشغيل الاستعلام.

يمكنك أيضًا التعرف على طرق أخرى لإعداد قاعدة بيانات NoSQL ، مثل كيفية إعداد قاعدة بيانات باستخدام MongoDB.

كيفية إعداد قاعدة بيانات NoSQL الخاصة بك

اقرأ التالي

يشاركسقسقةيشاركالبريد الإلكتروني

مواضيع ذات صلة

  • برمجة
  • برمجة
  • قاعدة البيانات

عن المؤلف

شارلين خان (تم نشر 38 مقالة)

يعمل شاي بدوام كامل كمطور برامج ويستمتع بكتابة أدلة لمساعدة الآخرين. لديها بكالوريوس في تكنولوجيا المعلومات ولديها خبرة سابقة في ضمان الجودة والدروس الخصوصية. شاي يحب اللعب والعزف على البيانو.

المزيد من Sharlene Khan

اشترك في نشرتنا الإخبارية

انضم إلى النشرة الإخبارية لدينا للحصول على نصائح تقنية ومراجعات وكتب إلكترونية مجانية وصفقات حصرية!

انقر هنا للاشتراك