2014-10-23 19 views
28

मैं एक वेब अनुप्रयोग के लिए Firebase उपयोग कर रहा हूँ पर नोड्स को हटा दें। यह बाहरी पुस्तकालयों का उपयोग करके सादा जावास्क्रिप्ट में लिखा गया है।कैसे हटाएं/Firebase

मैं यह कर सकते हैं "पुश" और '.on ("child_added")', लेकिन '.remove()' जिस तरह से यह कहते हैं कि यह चाहिए काम नहीं करता है के साथ डेटा पुनः प्राप्त। एपीआई के अनुसार,

"Firebase.remove() - इस Firebase स्थान पर डेटा निकालें बच्चे स्थानों पर किए गए डेटा का भी हटा दिया जाएगा हटाने के प्रभाव तुरंत दिखाई जाएगी।।।"

हालांकि, हटा तुरंत नहीं हो रहा है; केवल जब पूरी लिपि चल रही है। मुझे तुरंत हटाने के बाद और साफ़ किए गए पेड़ का उपयोग करने की आवश्यकता है।

उदाहरण कोड:

ref = new Firebase("myfirebase.com") //works 
ref.push({key:val}) //works 

ref.on('child_added', function(snapshot){ 
//do stuff 
}); //works 

ref.remove() 
//does not remove until the entire script/page is done 

वहाँ एक समान पद here है, लेकिन मैं एंबर पुस्तकालयों उपयोग नहीं कर रहा है, और भी तो यह रूप में एपीआई बताते हैं इसे होने की क्या सरल होना चाहिए के लिए एक समाधान की तरह लगता है।

ref = new Firebase("myfirebase.com") 
ref.remove(); 

यह काम नहीं करेगा क्योंकि आप एपीआई के माध्यम से एक पूरी Firebase को दूर नहीं कर सकते हैं:

+1

यह बहुत अस्पष्ट है कि आपको क्या लगता है कि यह गलत हो रहा है। निकालें() ठीक काम करता है। आप यहां बहुत सी अतुल्यकालिक गतिविधियां कर रहे हैं और ऐसा लगता है कि वे तुल्यकालिक हैं (संकेत: कोई गारंटी नहीं है कि उन घटनाओं का आदेश तब तक होगा जब तक आप अगली घटना को ट्रिगर करने के लिए सफलता कॉलबैक का उपयोग न करें) – Kato

उत्तर

56

समस्या यह है कि आप अपने Firebase की जड़ पर remove कहते हैं।

आप हालांकि इसके तहत किसी भी बच्चे को निकाल सकते हैं।

ref.child(key).remove(); 
+7

आप हटा सकते हैं() जब तक सुरक्षा नियम इसे अनुमति देते हैं तब तक फायरबेस उदाहरण की जड़ पर। मैंने अभी यह सुनिश्चित करने के लिए परीक्षण किया है कि यहां कुछ भी नहीं चल रहा है; यह बढ़िया काम करता है। – Kato

+0

वूप्स ... परीक्षण के लिए मुझे सेवा प्रदान करता है। एक बार जब मैं एक बेहतर कीबोर्ड पर हूं तो मैं अपना जवाब अपडेट करूंगा। –

+0

उस मामले में यह क्या हटाता है? सभी बच्चे (तो सभी डेटा ** ** में ऐप)? या यह ऐप को स्वयं ही हटा देता है, जैसे कि जब आप फायरबेस डैशबोर्ड (https://www.firebase.com/account/) से "हटाएं" पर क्लिक करते हैं? –

4

Firebase.remove() शायद सबसे Firebase तरीकों की तरह अतुल्यकालिक है, इस प्रकार आप की घटनाओं को सुनने के लिए पता करने के लिए जब कुछ हुआ है:

parent = ref.parent() 
parent.on('child_removed', function (snapshot) { 
    // removed! 
}) 
ref.remove() 
Firebase डॉक्स भी आप ढीला नेटवर्क कनेक्शन अगर यह काम करना चाहिए के अनुसार

। आप को पता है जब परिवर्तन वास्तव में Firebase सर्वर से सिंक्रनाइज़ किया गया है चाहते हैं, आप Firebase.remove विधि के लिए एक कॉलबैक फ़ंक्शन पारित कर सकते हैं:

ref.remove(function (error) { 
    if (!error) { 
     // removed! 
    } 
} 
6

के रूप में दूसरों .remove() करने के लिए कॉल का उल्लेख किया है अतुल्यकालिक है। हम सब के बारे में पता होना चाहिए कुछ नहीं होता त्वरित रूप, भले ही यह प्रकाश की गति से है।

'तत्काल' का मतलब क्या है कि .remove() पर कॉल के बाद कोड की अगली पंक्ति निष्पादित करने में सक्षम होना चाहिए। जब डेटा हटा दिया गया है अतुल्यकालिक संचालन के साथ अगली पंक्ति हो सकता है, यह हो सकता है नहीं - यह पूरी तरह से मौका और समय की राशि है कि बीत जाने के लिए नीचे है।

.remove() इस स्थिति कार्रवाई करने के साथ सौदा करने में मदद करने के बाद हम कि आपरेशन (के साथ या एक त्रुटि के बिना) पूरा हो चुका है पता एक पैरामीटर एक कॉलबैक फ़ंक्शन लेता है। .push() दो पैरामीटर, एक मूल्य और बस .remove() की तरह एक कॉलबैक लेता है।

ref = new Firebase("myfirebase.com") 

ref.push({key:val}, function(error){ 
    //do stuff after push completed 
}); 

// deletes all data pushed so far 
ref.remove(function(error){ 
    //do stuff after removal 
}); 
+0

क्या आप "त्रुटि" कॉलबैक में "// do stuffs" सुनिश्चित करते हैं? – Cerberus

+0

हे @ सेर्बरस - टीभ अब मुझे यकीन नहीं है। मैंने Google खरीद के बाद fbase का उपयोग करना बंद कर दिया। कृपया उत्तर दें अगर इसका गलत, या संदर्भ नया दस्तावेज़ –

+1

किया गया है, लेकिन यह "आपके-बेस" की तुलना में "आपका संग्रह" जैसा है, जो कि पूरे आधार पर हो सकता है ... चीयर्स @ डेविड एंडर्टन – Cerberus

1

एक रिकॉर्ड निकालने के लिए:

यहाँ संशोधनों के साथ अपने उदाहरण कोड है।

var db = firebase.database();     
var ref = db.ref(); 
var survey=db.ref(path+'/'+path); //Eg path is company/employee     
survey.child(key).remove();   //Eg key is employee id