"यदि कोई कर्मचारी अपना काम अच्छी तरह से करना चाहता है, तो उसे पहले अपने औजारों को तेज करना होगा।" - कन्फ्यूशियस, "द एनालेक्ट्स ऑफ कन्फ्यूशियस। लू लिंगगोंग"
मुखपृष्ठ > प्रोग्रामिंग > फायरस्टोर में संग्रह और उपसंग्रह को प्रभावी ढंग से कैसे हटाएं?

फायरस्टोर में संग्रह और उपसंग्रह को प्रभावी ढंग से कैसे हटाएं?

2024-11-03 को प्रकाशित
ब्राउज़ करें:588

 How to Effectively Delete Collections and Subcollections in Firestore?

फायरस्टोर में संग्रह और उपसंग्रह को हटाना

फायरस्टोर के साथ काम करते समय, ऐसे परिदृश्य उत्पन्न हो सकते हैं जहां आपको संग्रह या उपसंग्रह को हटाने की आवश्यकता होती है। हालाँकि, उपसंग्रह वाले मूल दस्तावेज़ को हटाना चुनौतियाँ प्रस्तुत करता है। यह आलेख बताता है कि ऐसी स्थितियों को प्रभावी ढंग से कैसे प्रबंधित किया जाए। अपनी यूनिक आईडी के साथ. प्रत्येक सूची दस्तावेज़ में "कर्मचारी" और "स्थान" नामक उपसंग्रह होते हैं। संरचना इस प्रकार है:

(सूचियाँ) -सूची आईडी (कर्मचारी) (स्थान)यदि कोई उपयोगकर्ता किसी विशिष्ट सूची को हटाना चाहता है, तो "listId" दस्तावेज़ को हटाने से फायरस्टोर के दस्तावेज़ीकरण को धता बताते हुए, उसके उपसंग्रह बरकरार रहेंगे।

समाधान: अनुक्रमिक विलोपन
(lists)
    -listId
       (employees)
       (locations)

इसे संबोधित करने के लिए, हम एक क्रमिक विलोपन दृष्टिकोण का प्रस्ताव करते हैं:

"कर्मचारी" उपसंग्रह के भीतर सभी दस्तावेज़ पुनर्प्राप्त करें और उन्हें हटा दें।

के लिए प्रक्रिया को दोहराएं "स्थान" उपसंग्रह।

अंत में, "सूचीआईडी" दस्तावेज़ को हटा दें।
  1. यह विधि विशिष्ट सूची और उससे संबंधित उपसंग्रहों को पूरी तरह से हटाना सुनिश्चित करती है।
  2. विचार

हालांकि हटाना एक प्रभावी उपकरण है, फायरबेस इसे सावधानी से उपयोग करने की सलाह देता है, खासकर बड़े संग्रह के लिए। हालाँकि, छोटे संग्रहों के लिए, हटाना एक व्यवहार्य विकल्प है। यदि बड़े संग्रहों के लिए विलोपन का उपयोग करना अपरिहार्य है, तो इसे एक विश्वसनीय सर्वर वातावरण पर निष्पादित करें।

Android के लिए कोड कार्यान्वयन

Android अनुप्रयोगों के लिए, आप निम्नलिखित कोड का उपयोग कर सकते हैं हटाने की प्रक्रिया लागू करें:

निजी शून्य डिलीटकलेक्शन(अंतिम कलेक्शनरेफरेंस संग्रह, निष्पादक निष्पादक) { कार्य.कॉल(निष्पादक, () -> { int बैच आकार = 10; क्वेरी क्वेरी = Collection.orderBy(FieldPath.documentId()).limit(batchSize); सूची हटाया गया = deleteQueryBatch(query); जबकि (हटाया गया आकार() >= बैच आकार) { दस्तावेज़स्नैपशॉट अंतिम = हटा दिया गया.get(हटाया गया.आकार() - 1); क्वेरी = Collection.orderBy(FieldPath.documentId()).startAfter(last.getId()).limit(batchSize); हटाया गया = deleteQueryBatch(क्वेरी); } शून्य वापसी; }); } @वर्करथ्रेड निजी सूची deleteQueryBatch(अंतिम क्वेरी क्वेरी) अपवाद फेंकता है { QuerySnapshot querySnapshot = Tasks.await(query.get()); राइटबैच बैच = query.getFirestore().बैच(); (डॉक्यूमेंटस्नैपशॉट स्नैपशॉट: querySnapshot) के लिए { बैच.डिलीट(स्नैपशॉट.गेटरेफरेंस()); } कार्य.प्रतीक्षा(बैच.commit()); वापसी querySnapshot.getDocuments(); }यह कोड दस्तावेज़ों को बैचों में पुनर्प्राप्त और हटाता है, जिससे संग्रह और उसके उपसंग्रह दोनों का विलोपन सुनिश्चित होता है।

नवीनतम ट्यूटोरियल अधिक>

चीनी भाषा का अध्ययन करें

अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।

Copyright© 2022 湘ICP备2022001581号-3