android - पुनः प्राप्त करें और जांचें कि क्या कोई विशेष उपयोगकर्ता ईमेल दर्ज करता है, वह फ़ायरबेज में मौजूद है या नहीं



firebase firebase-database (1)

यदि आपने अपना वर्तमान दृष्टिकोण काम किया है (यह सही है if बयान जोड़ने का मामला है) तो आप उपयोगकर्ताओं की संपूर्ण सूची डाउनलोड कर लेंगे, बस यह जांचने के लिए कि कोई विशिष्ट ईमेल पता उपयोग में है या नहीं। यह बैंडविड्थ का अविश्वसनीय रूप से बेकार है, खासकर जब आपका उपयोगकर्ता सूची बढ़ता है।

आपको केवल अनुरोधित ईमेल पते के साथ उपयोगकर्ता को वापस करने के लिए एक फ़ायरबेस डेटाबेस क्वेरी का उपयोग करना चाहिए:

databaseReference = FirebaseDatabase.getInstance().getReference().child("guardians");
Query query = databaseReference.orderByChild("guardianEmail").equalTo("[email protected]");
query.addListenerForSingleValueEvent(new ValueEventListener() {
        @Override
        public void onDataChange(DataSnapshot dataSnapshot) {
            if (dataSnapshot.exists()) {
                ... the email address is already in use
            }
        }

        @Override
        public void onCancelled(DatabaseError databaseError) {
            throw databaseError.toException(); // don't ignore errors
        }
    });

guardianEmail फ़ील्ड के लिए एक इंडेक्स जोड़ना सुनिश्चित करें, अन्यथा आप क्वेरी के लिए सभी डेटा को डाउनलोड करना समाप्त करेंगे

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

इस और अन्य तरीकों पर अधिक जानकारी के लिए देखें:

मैं एक एंड्रॉइड एप्लिकेशन विकसित कर रहा हूं और अपने डेटा को स्टोर करने के लिए फायरबेज का इस्तेमाल कर रहा हूं। मैं यह पूछने के लिए firebase आवृत्ति पूछना चाहता हूं कि क्या उपयोगकर्ता द्वारा ईमेल पता दर्ज किया गया है, जिसमें से एक Firebase में ईमेल से मेल खाता है। फायरबसे बैकएंड डेटा संलग्न करना

मेरी आवश्यकता है, मैं "अभिभावकों" के माध्यम से पाश करना चाहता हूं, जो कि डाटाबेस उदाहरण का प्रत्यक्ष बच्चा है और जांचता है कि उपयोगकर्ता ने उस ईमेल में से किसी एक ईमेल पते से मेल खाता है या नहीं। संलग्न छवि में, यदि उपयोगकर्ता ने ईमेल दर्ज किया है तो "[email protected]" या दूसरे से मेल खाता है, तो मैं कुछ करना चाहता हूं।

databaseReference = FirebaseDatabase.getInstance().getReference().child("guardians");
databaseReference.addListenerForSingleValueEvent(new ValueEventListener() {
        @Override
        public void onDataChange(DataSnapshot dataSnapshot) {
            for(DataSnapshot data: dataSnapshot.getChildren()){
                if (**I am unable to figure out how to search through entire guardians child for the email**) {

                } else {

                }
              }
        }

        @Override
        public void onCancelled(DatabaseError databaseError) {

        }
    });

मुझे यह पता लगाने में असमर्थ हूं कि पूरे अभिभावकों के बच्चे के माध्यम से खोज करने के लिए कि ईमेल में उपयोगकर्ता ने ईमेल दर्ज किया है या नहीं। किसी भी मदद की सराहना की है अग्रिम में धन्यवाद।