2017-07-24 5 views
9

मैं सभी दिए गए पुश आईडी के लिए प्रविष्टियों को कैसे हटा सकता हूं?फायरबेस - एक बार में कई प्रविष्टियों को कैसे हटाएं?

उदाहरण के लिए, मान लीजिए कि KoxoxwTqfb50E1Gvi9F धक्का आईडी कई चाबियाँ के तहत मेरे डेटाबेस अर्थात के कई स्थानों में है और मुझे के रूप में स्थिर सभी प्रविष्टियों को हटाने के लिए (के बाद से मैं अपने स्थानों में जानते हैं) का विरोध किया एक ही बार में KoxoxwTqfb50E1Gvi9F लिए सभी प्रविष्टियों को हटाना चाहते हैं।

दूसरे शब्दों में, क्या फ़ायरबेस को बताने का कोई तरीका है "पूरे डेटाबेस में KoxoxwTqfb50E1Gvi9F के लिए सभी प्रविष्टियों को हटाएं"?

+0

कोई भी जो मैंने सुना होगा। आपके मामले में वास्तव में क्या आवश्यकता है? क्या आप चीजों को क्लाइंट-साइड पर रखना चाहते हैं? क्या आप बस यह सुनिश्चित करना चाहते हैं कि सबकुछ हटा दिया गया हो? – Barthy

+0

आपको उन सभी स्थानों को जानना होगा जहां कुछ दिखाई दे सकता है और उन्हें स्वयं प्रबंधित कर सकते हैं। डेटाबेस आपके डेटा की संरचना को समझ में नहीं आता है - जो भी आप चाहते हैं वह करने के लिए यह सिर्फ एक कंटेनर है। –

+0

मुझे यकीन नहीं है कि यह कस्टम फ़ंक्शन के बिना संभव है या नहीं। आप फायरबेस फ़ंक्शन में देख सकते हैं, जिसके साथ आप किसी विशेष स्थान के लिए श्रोता बना सकते हैं और फिर इसे उसी कुंजी के सभी अन्य मानों को हटा सकते हैं। –

उत्तर

5

अपने डेटाबेस से कई प्रविष्टियों को हटाने के लिए, आपको उन सभी स्थानों (refernces) को जानने की आवश्यकता है। तो दूसरे शब्दों के साथ, जिस तरह से आप डेटा जोड़ते हैं, आपको इसे भी हटाना चाहिए।

अपने डेटाबेस मान लिया जाये कि इस तरह दिखता है:

private static void deleteUser(String userId, String groupId) { 
    Map<String, Object> map = new HashMap<>(); 
    map.put("/Users/" + userId + "/", null); 
    map.put("/Groups/" + groupId + "/Users/" + userId + "/", new HashMap<>().put(userId, null)); 
    //other locations 
    databaseReference.updateChildren(map); 
} 

इस विधि atomically उन सभी प्रविष्टियों को हटाता है:

Firebase-root 
    | 
    --- Users 
    |  | 
    |  --- userUid1 
    |  |  | 
    |  |  --- //user1 data 
    |  | 
    |  --- userUid2 
    |   | 
    |   --- //user2 data 
    | 
    --- Groups 
     | 
     --- groupId1 
     |  | 
     |  --- //group1 data 
     |  | 
     |  --- Users 
     |   | 
     |   --- userUid1: true 
     |   | 
     |   --- userUid3: true 
     | 
     --- groupId2 
       | 
       --- //group2 data 

मैं सुझाव है कि आप नीचे दी गई विधि का उपयोग कर। इन पथों का उपयोग करके, आप JSON पेड़ में एकाधिक स्थानों पर एक साथ deleteUser() विधि के साथ एक ही कॉल के साथ एक साथ अद्यतन कर सकते हैं। इस तरह से बनाए गए समेकित डिलीट परमाणु हैं: या तो सभी अपडेट सफल होते हैं या सभी अपडेट विफल हो जाते हैं।

उम्मीद है कि यह मदद करता है।

संबंधित मुद्दे