'क्वेरी को इंडेक्स की आवश्यकता है' त्रुटि को हल करें और अपने फायरबेस प्रश्नों को अपने एंगुलर ऐप के अनुरूप काम करें।
फायरबेस की एक विशेषता यह है कि आप क्लाउड में संग्रहीत एक NoSQL डेटाबेस बना सकते हैं। आप इस डेटाबेस को आपके द्वारा विकसित अनुप्रयोगों में एकीकृत भी कर सकते हैं, और आप डेटाबेस के अंदर डेटा को स्टोर, अपडेट और डिलीट कर सकते हैं।
आप अपने एंगुलर एप्लिकेशन से फायरबेस डेटाबेस को भी क्वेरी कर सकते हैं। Firebase के लिए आवश्यक है कि आप एक से अधिक फ़ील्ड का उपयोग करने वाली क्वेरी के लिए फ़ील्ड संयोजनों को अनुक्रमित करें। जब आप किसी अन्य समय पर क्वेरी को कॉल करते हैं तो यह फ़ायरबेस को आसानी से उन्हें देखने की अनुमति देता है।
अपना कोणीय ऐप और फायरबेस डेटाबेस सेट करें
अपने फायरबेस प्रश्नों को लिखने से पहले, आपको बनाना होगा एक कोणीय अनुप्रयोग और एक फायरबेस डेटाबेस। आपको अपने डेटाबेस से कनेक्ट करने के लिए अपने एंगुलर ऐप को भी कॉन्फ़िगर करना होगा।
- यदि आपके पास मौजूदा कोणीय अनुप्रयोग नहीं है, तो आप इसका उपयोग कर सकते हैं
एनजी न्यू सभी आवश्यक कोणीय फ़ाइलों के साथ एक नया प्रोजेक्ट बनाने का आदेश।
एनजी नयानया-कोणीय ऐप
- बनाओ कोणीय ऐप के लिए नया फायरबेस डेटाबेस फायरबेस में लॉग इन करके और एक नया फायरबेस प्रोजेक्ट बनाने के लिए संकेतों का पालन करके।
- अपने नए क्लाउड फायरस्टोर डेटाबेस में, "उत्पाद" और "आपूर्तिकर्ता" के लिए दो संग्रह (तालिकाओं के रूप में भी जाना जाता है) बनाएं। एक आपूर्तिकर्ता कई उत्पादों की आपूर्ति कर सकता है। प्रत्येक उत्पाद "आपूर्तिकर्ता आईडी" फ़ील्ड का उपयोग करके आपूर्तिकर्ता से भी जुड़ा होता है।
- "उत्पाद" तालिका में निम्न डेटा दर्ज करें। स्ट्रिंग के रूप में नाम, उत्पाद आईडी और सप्लायर आईडी फ़ील्ड दर्ज करें। मूल्य और इनस्टॉक फ़ील्ड को संख्याओं के रूप में दर्ज करें।यहां एक उदाहरण दिखाया गया है कि यह कैसा दिखना चाहिए:
दस्तावेज़ आईडी खेत उत्पाद1 - नाम: "रिबन"
- कीमत: 12.99
- स्टॉक में: 10
- उत्पाद आईडी: "पी1"
- सप्लायर आईडी: "एस1"
उत्पाद2 - नाम: "गुब्बारे"
- कीमत: 1.5
- स्टॉक में: 2
- उत्पाद आईडी: "पी 2"
- सप्लायर आईडी: "एस1"
उत्पाद3 - नाम: "कागज"
- कीमत: 2.99
- स्टॉक में: 20
- उत्पाद आईडी: "पी3"
- सप्लायर आईडी: "एस1"
उत्पाद4 - नाम: "टेबल"
- कीमत: 199
- स्टॉक में: 1
- उत्पाद आईडी: "पी4"
- सप्लायर आईडी: "S2"
- "आपूर्तिकर्ता" तालिका में निम्न डेटा दर्ज करें। सभी फ़ील्ड को स्ट्रिंग के रूप में दर्ज करें।यहां बताया गया है कि आपूर्तिकर्ता1 प्रविष्टि कैसी दिखनी चाहिए:
दस्तावेज़ आईडी खेत आपूर्तिकर्ता1 - नाम: "कला और शिल्प आपूर्तिकर्ता"
- स्थान: "कैलिफ़ोर्निया, यूएसए"
- सप्लायर आईडी: "एस1"
आपूर्तिकर्ता2 - नाम: "अद्भुत टेबल्स"
- स्थान: "सिडनी, ऑस्ट्रेलिया"
- सप्लायर आईडी: "S2"
- स्थापित करना कोणीय / आग आपके ऐप में।
एनपीएम मैं @ कोणीय/fire
- फायरबेस में, खोलें परियोजना सेटिंग्स. अपने एंगुलर एप्लिकेशन में फायरबेस जोड़ने के लिए एंगल ब्रैकेट्स लोगो पर क्लिक करें।
- फायरबेस आपको कॉन्फ़िगरेशन विवरण प्रदान करेगा जिसका उपयोग आप अपने एंगुलर ऐप को फायरबेस डेटाबेस से कनेक्ट करने के लिए कर सकते हैं।
- सामग्री को बदलें वातावरण/पर्यावरण.ts निम्नलिखित कोड के साथ। आपको मूल्यों को बदलने की आवश्यकता होगी फायरबेस कॉन्फिग. पिछले चरण में Firebase ने आपको जो कॉन्फ़िगरेशन प्रदान किया था, उससे मिलान करने के लिए इन्हें बदलें।
निर्यात करनास्थिरांक पर्यावरण = {
उत्पादन: असत्य,
फायरबेस कॉन्फिग: {
apiKey: "AIzaSyBzVyXBhDlvXQEltNkE9xKq-37यूबियन डीएलएम",
authDomain: "muo-firebase-queries.firebaseapp.com",
प्रोजेक्ट आईडी: "म्यूओ-फायरबेस-क्वेरी",
स्टोरेजबकेट: "muo-firebase-queries.appspot.com",
संदेश भेजने वाला आईडी: "569911365044",
ऐप आईडी: "1:569911365044वेब:9557bfef800caa5cdaf6e1"
}
}; - एंगुलर फायरबेस मॉड्यूल के साथ ऊपर से पर्यावरण को आयात करें src/app/app.module.ts.
आयात { वातावरण } से "../वातावरण/पर्यावरण";
आयात { AngularFireModule } से '@ कोणीय/अग्नि/संगत';
आयात {AngularFirestoreModule} से "@ कोणीय/आग/कॉम्पैट/फायरस्टोर"; - आयात सरणी में Firebase मॉड्यूल जोड़ें:
एंगुलरफायरस्टोरमॉड्यूल,
एंगुलरफायरमॉड्यूल.इनिशियलाइज़ ऐप(वातावरण.firebaseConfig)
एक सेवा फ़ाइल में एक जटिल फायरबेस क्वेरी कैसे लिखें
आप किसी सेवा फ़ाइल का उपयोग करके अपने फ़ायरबेस डेटाबेस में तालिकाओं को क्वेरी कर सकते हैं।
- "सेवा" नामक एक नया फ़ोल्डर बनाएँ। फ़ोल्डर के अंदर, "service.ts" नामक एक नई फ़ाइल बनाएँ।
- फ़ाइल में AngularFirestore आयात, कंस्ट्रक्टर और क्लास जोड़ें।
आयात {इंजेक्शन योग्य} से '@ कोणीय/कोर';
आयात {कोणीयफायरस्टोर} से '@ कोणीय/फायर/कॉम्पैट/फायरस्टोर';
@ इंजेक्शन योग्य({
इसमें प्रदत्त: 'जड़'
})
निर्यात करनाकक्षासेवा{
निर्माता(निजी डीबी: एंगुलरफायरस्टोर) { }
} - इस क्वेरी उदाहरण में, आपूर्तिकर्ता के नाम के आधार पर उत्पादों की सूची बनाएं। इसके अतिरिक्त, सूची को केवल न्यूनतम स्टॉक वाले आइटम को प्रदर्शित करने के लिए फ़िल्टर करें। चूंकि फायरबेस एक तर्कसंगत डेटाबेस नहीं है, इसलिए हमें एक से अधिक क्वेरी का उपयोग करके दो अलग-अलग तालिकाओं को क्वेरी करने की आवश्यकता होगी।
- ऐसा करने के लिए, नामक एक नया फ़ंक्शन बनाएं प्राप्त आपूर्तिकर्ता (), पहली क्वेरी को संभालने के लिए। फ़ंक्शन नाम से मेल खाने वाली "आपूर्तिकर्ता" तालिका में पंक्ति लौटाएगा।
getSupplier (नाम: स्ट्रिंग) {
वापसीनयावायदा((संकल्प) => {
यह.डीबी.संग्रह('प्रदायक', रेफरी => रेफरी.कहां('नाम', '==', नाम))। मूल्य परिवर्तन ()। सदस्यता लें (आपूर्तिकर्ता => संकल्प (आपूर्तिकर्ता))
})
} - नामक एक और फ़ंक्शन बनाएं getProductsFromSupplier (). यह क्वेरी किसी विशेष आपूर्तिकर्ता से जुड़े उत्पादों के डेटाबेस से पूछताछ करती है। इसके अतिरिक्त, क्वेरी "इनस्टॉक" फ़ील्ड द्वारा परिणामों को भी ऑर्डर करती है और सूची में केवल पहला रिकॉर्ड प्रदर्शित करती है। दूसरे शब्दों में, यह किसी विशेष आपूर्तिकर्ता के लिए उत्पाद को सबसे कम "इनस्टॉक" गिनती के साथ वापस कर देगा।
getProductsFromSupplier (आपूर्तिकर्ता आईडी: स्ट्रिंग) {
वापसीनयावायदा((संकल्प) => {
यह.डीबी.संग्रह('उत्पाद', रेफरी => रेफरी.कहां('आपूर्तिकर्ता आईडी', '==', सप्लायर आईडी)।'स्टॉक में').स्टार्टएट (0)। सीमा (1))। मूल्य परिवर्तन ()। सदस्यता लें (उत्पाद => संकल्प (उत्पाद))
})
} - में src/app/app.component.ts फ़ाइल, सेवा आयात करें।
आयात { सेवा } से 'src/app/services/service';
- AppComponent वर्ग के अंदर एक कंस्ट्रक्टर जोड़ें, और कंस्ट्रक्टर में सेवा जोड़ें।
निर्माता(निजी सेवा: सेवा) { }
- नामक एक नया फ़ंक्शन बनाएं उत्पाद स्टॉक प्राप्त करें(). यह फ़ंक्शन किसी विशेष आपूर्तिकर्ता द्वारा प्रदान किए जाने वाले न्यूनतम स्टॉक वाले उत्पाद को प्रिंट करेगा। में नए फ़ंक्शन को कॉल करना सुनिश्चित करें एनजीऑनइनिट () फ़ंक्शन, और परिणाम को संग्रहीत करने के लिए एक चर घोषित करें।
उत्पाद: कोई भी;
एनजीऑनइनिट (): शून्य {
यह.getProductStock ();
}
अतुल्यकालिक गेटप्रोडक्टस्टॉक () {}
- के अंदर उत्पाद स्टॉक प्राप्त करें () फ़ंक्शन, सेवा फ़ाइल से दो प्रश्नों का उपयोग करें। नाम के आधार पर आपूर्तिकर्ता का रिकॉर्ड प्राप्त करने के लिए पहली क्वेरी का उपयोग करें। फिर, दूसरी क्वेरी के लिए एक तर्क के रूप में सप्लायर आईडी का उपयोग करें, जो उस आपूर्तिकर्ता के उत्पाद को सबसे कम स्टॉक के साथ ढूंढेगा।
होने देना आपूर्तिकर्ता = इंतजारयह.service.getSupplier ('कला और शिल्प आपूर्तिकर्ता');
यह.उत्पाद = इंतजारयह.service.getProductsFromSupplier (आपूर्तिकर्ता[0]।आपूर्तिकर्ता आईडी); - में सामग्री निकालें src/app/app.component.html फ़ाइल, और इसे निम्न के साथ बदलें:
<एच 2> से सबसे कम स्टॉक वाले उत्पाद "कला और शिल्प आपूर्तिकर्ता"</h2>
<div *ngFor="उत्पादों की वस्तु दें">
<पी> नाम: {{आइटम.नाम}} </पी>
<पी> स्टॉक में संख्या: {{item.inStock}} </पी>
<पी> कीमत: ${{item.price}} </पी>
</div> - वेब ब्राउज़र में एप्लिकेशन चलाएँ एनजी सर्व आज्ञा।
एनजी सर्व
- किसी भी वेब ब्राउज़र का उपयोग करके अपनी वेबसाइट खोलें। डिफ़ॉल्ट रूप से, कोणीय एप्लिकेशन को होस्ट करता है लोकलहोस्ट: 4200.
- आपका डेटा स्क्रीन पर सही ढंग से प्रदर्शित नहीं होगा। वेबपेज पर राइट-क्लिक करें और क्लिक करें निरीक्षण अपने ब्राउज़र के डेवलपर टूल खोलने के लिए।
- पर नेविगेट करें सांत्वना देना टैब। आपको यह बताने के लिए एक त्रुटि प्रदर्शित होगी कि क्वेरी के लिए एक अनुक्रमणिका की आवश्यकता होगी।
अपनी क्वेरी के लिए एक समग्र अनुक्रमणिका कैसे बनाएं
फायरबेस उन प्रश्नों के लिए अनुक्रमणिका बनाता है जिनमें एकाधिक फ़ील्ड हो सकते हैं। के मुताबिक फायरबेस दस्तावेज, यह एक मानचित्र के रूप में कार्य करता है, ताकि Firebase क्वेरी में निहित फ़ील्ड के स्थान को देख सके।
- कंसोल में, उस लिंक पर क्लिक करें जो त्रुटि प्रदर्शित करता है।
- अपने फायरबेस खाते में साइन इन करें।
- एक संकेत प्रदर्शित होगा जो आपको फ़ायरबेस क्वेरी के लिए एक अनुक्रमणिका बनाने के लिए कहेगा। पर क्लिक करें इंडेक्स बनाएं.
- Firebase आपकी क्वेरी द्वारा उपयोग किए जाने वाले फ़ील्ड को अनुक्रमित करेगा। कुछ मिनट तक प्रतीक्षा करें जब तक कि स्थिति "भवन" से "सक्षम" में बदल न जाए।
- अपने वेब ब्राउज़र को रिफ्रेश करें। क्वेरी चलेगी और होमपेज पर सही परिणाम देगी। यदि आप अपने ब्राउज़र के डेवलपर टूल का उपयोग करके कंसोल डीबगर खोलते हैं, तो त्रुटि अब नहीं रहनी चाहिए।
अपने Firebase डेटाबेस को क्वेरी करना
Firebase आपको क्लाउड में NoSQL डेटाबेस बनाने की अनुमति देता है। फिर आप उस डेटाबेस को एंगुलर एप्लिकेशन में एकीकृत कर सकते हैं जिसे आप विकसित कर रहे हैं। आप डेटा को स्टोर करने, अपडेट करने या हटाने के लिए विभिन्न प्रकार की क्वेरी बना सकते हैं। आप एक क्वेरी भी बना सकते हैं जो एक साथ कई फ़ील्ड का उपयोग करती है।
जब आप एक क्वेरी बनाते हैं जो एकाधिक फ़ील्ड का उपयोग करती है, तो उसे चलाने का प्रयास करने से एक त्रुटि उत्पन्न होगी। आपको क्वेरी में उपयोग किए गए फ़ील्ड संयोजन को अनुक्रमित करने की आवश्यकता होगी, ताकि जब भी आप क्वेरी चलाएँ तो Firebase इसे आसानी से देख सके।
आप NoSQL डेटाबेस सेट करने के अन्य तरीकों के बारे में भी जान सकते हैं, जैसे कि MongoDB का उपयोग करके डेटाबेस कैसे सेट करें।