संपादित 2 संयोजन में .childexists
उपयोग करने का प्रयास; शीर्ष पर डालने के लायक: मुझे लगता है कि यह वास्तव में यह उल्लेख करने लायक है कि यह वास्तव में यह जांचने के लिए कि क्या कोई डेटा मौजूद है या नहीं, यह स्नैपशॉट पर सभी डेटा डाउनलोड कर रहा है। आपको यहाँ ध्यान रखना चाहिए। यदि संदर्भ विशाल है (उदा। वास्तव में रूट संदर्भ और विशिष्ट बच्चे/संपत्ति नहीं) तो आपको या तो गहरा नोड ढूंढना चाहिए जिसका उपयोग आप अस्तित्व की जांच करने या अपनी डेटा संरचना को अलग-अलग डिजाइन करने के लिए कर सकते हैं ताकि एक कुशल जांच संभव हो।
डेटाबेस संदर्भ प्रभावी रूप से उस डेटा के लिए यूआरएल है। आप वास्तव में डेटा प्राप्त करना चाहते हैं यह देखने के लिए कि कोई बच्चा मौजूद है या नहीं। यही कारण है कि जिस विधि को आप ढूंढ रहे हैं वह DataSnapshot पर है।
DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference();
rootRef.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
void onDataChange(DataSnapshot snapshot) {
if (snapshot.hasChild("name")) {
// run some code
}
}
});
अब, यह डिज़ाइन पैटर्न थोड़ा अजीब लगता है। आप यह देखने के लिए पूरे डेटाबेस को पढ़ रहे हैं कि "नाम" मौजूद है या नहीं। आप इसे rootRef.child("name")
पर सुनकर थोड़ा और अधिक कुशल बना सकते हैं और फिर यह जांच कर सकते हैं कि snapshot.exists()
है या नहीं।
यदि आप सत्यापन पर सत्यापन करने की कोशिश कर रहे हैं, और प्रवाह को नियंत्रित नहीं करते हैं, तो आपको इस कोड को अपने rules.json
में डालने पर विचार करना चाहिए।
संपादित: मैं मूल रूप से गलत समारोह का नाम (hasChild के बजाय childExists)
स्रोत
2016-05-23 22:21:13
http://stackoverflow.com/a/36826793/3145960 की [समझौता डेटा Firebase में मौजूद रहने पर] –
संभावित डुप्लिकेट (प्रयुक्त http://stackoverflow.com/questions/36826429/understanding-if-data-exists-in-firebase) –