खोज…


समझे कि कौन सा डेटा getReference () द्वारा संदर्भित है

इस उदाहरण में, हम इस डेटाबेस का उपयोग करते हैं:

"your-project-name" : {
    "users" : {
        "randomUserId1" : {
            "display-name" : "John Doe",
            "gender" : "male"
        }
        "randomUserId2" : {
            "display-name" : "Jane Dae",
            "gender" : "female"
        }
    },
    "books" {
        "bookId1" : {
            "title" : "Adventure of Someone"
        },
        "bookId1" : {
            "title" : "Harry Potter"
        },
        "bookId1" : {
            "title" : "Game of Throne"
        }
    }
}

यदि आप ऊपर डेटाबेस का उपयोग करते हैं तो:

  • FirebaseDatabase.getInstance().getReference()

    आपके प्रोजेक्ट के जनक, "your-project-name" डेटा को इंगित करेगा। तो आपके द्वारा अधिग्रहित किया गया dataSnapshot इसके अंदर सभी डेटा होगा, जिसमें सभी "users" डेटा और "books" डेटा शामिल हैं।

  • FirebaseDatabase.getInstance().getReference("users") और FirebaseDatabase.getInstance().getReference().child("users")

    "your-project-name/users" इंगित करते हुए एक ही परिणाम होगा

  • FirebaseDatabase.getInstance().getReference("users/randomUserId1") और FirebaseDatabase.getInstance().getReference().child("users/randomUserId1") और FirebaseDatabase.getInstance().getReference().child("users").child("randomUserId1")

    "your-project-name/users/randomUserId1" इंगित करते हुए एक ही परिणाम होगा

नोट: इस उदाहरण को पूरी तरह से समझने के लिए आवश्यक है कि कौन सा डेटा datanapshot ऑब्जेक्ट के अंदर है

समझ जो डेटा dataSnapshot वस्तु के अंदर है

नोट: आपको यह जानना होगा कि पहले इस उदाहरण को पूरी तरह से समझने से पहले getReference () द्वारा किस डेटा को संदर्भित किया जाता है

आपके डेटा को Firebase Realtime Database से प्राप्त करने की तीन सामान्य विधि हैं:

  • addValueEventListener()
  • addListenerForSingleValueEvent()
  • addChildEventListener()

जब हम इस बारे में बात करते हैं कि कौन सा डेटा dataSnapshot ऑब्जेक्ट के अंदर है, तो addValueEventListener() और addListenerForSingleValueEvent() मूल रूप से एक ही है। केवल अंतर addValueEventListener() है संदर्भित डेटा में किए गए परिवर्तनों को सुनते रहें जबकि addListenerForSingleValueEvent() नहीं है।


तो विचार करें कि हमारे पास यह डेटाबेस है:

"your-project-name" : {
    "users" : {
        "randomUserId1" : {
            "display-name" : "John Doe",
            "gender" : "male"
        }
        "randomUserId2" : {
            "display-name" : "Jane Dae",
            "gender" : "female"
        }
    },
    "books" {
        "bookId1" : {
            "title" : "Adventure of Someone"
        },
        "bookId1" : {
            "title" : "Harry Potter"
        },
        "bookId1" : {
            "title" : "Game of Throne"
        }
    }
}

AddSalueEventListener और addListenerForSingleValueEvent द्वारा निर्मित DataSnapshot

dataSnapshot addValueEventListener() और addListenerForSingleValueEvent() द्वारा निर्मित addValueEventListener() इसे संदर्भित सटीक डेटा का मान होगा। जैसे जब ref "your-project-name" dataSnapshot तो dataSnapshot होना चाहिए:

... onDataChange(DataSnapshot dataSnapshot) {
    dataSnapshot.getKey(); // will have value of String: "your-project-name"
    for (DataSnapshot snapshot : dataSnapshot) {
        snapshot.getKey(); // will have value of String: "users", then "books"
        for (DataSnapshot deeperSnapshot : dataSnapshot) {
            snapshot.getKey();
            // if snapshot.getKey() is "users", this will have value of String: "randomUserId1", then "randomUserId2"
            // If snapshot.getKey() is "books", this will have value of String: "bookId1", then "bookId2"
        }
    }
}

AddShildEventListener द्वारा निर्मित DataSnapshot

dataSnapshot addChildEventListener() द्वारा निर्मित dataSnapshot में डेटा का एक स्तर होता है जो डेटा के अंदर संदर्भित होता है। इन मामलों की तरह:

जब ref "your-project-name" dataSnapshot तो dataSnapshot होना चाहिए:

... onChildAdded(DataSnapshot dataSnapshot, String s) {
    dataSnapshot.getKey(); // will have value of String: "users", then "books"
    for (DataSnapshot snapshot : dataSnapshot) {
        snapshot.getKey();
        // if dataSnapshot.getKey() is "users", this will have value of String: "randomUserId1", then "randomUserId2"
        // If dataSnapshot.getKey() is "books", this will have value of String: "bookId1", then "bookId2"
        for (DataSnapshot deeperSnapshot : dataSnapshot) {
            snapshot.getKey();
            // if snapshot.getKey() is "randomUserId1" or "randomUserId1", this will have value of String: "display-name", then "gender"
            // But the value will be different based on key
            // If snapshot.getKey() is "books", this will have value of String: "title", but the value will be different based on key
        }
    }
}
// dataSnapshot inside onChildChanged, onChildMoved, and onChildRemoved will have the same data as onChildAdded

मैं पता सबसे अधिक संभावना है कि हम का उपयोग करना चाहते जाएगा .getValue() के बजाय getKey() । लेकिन यहां हम getKey उपयोग getKey क्योंकि इसमें हमेशा एक स्ट्रिंग होगी और कस्टम ऑब्जेक्ट, या मैप, या अन्य में बदलने की कोई आवश्यकता नहीं है। मूल रूप से, जब आप जानते हैं कि कौन सा मुख्य dataSnapshot इंगित कर रहा है, तो आप आसानी से जान सकते हैं कि इसमें कौन सा मूल्य है और इसे अपने स्वयं के कस्टम ऑब्जेक्ट (या कुछ भी) में पार्स करें



Modified text is an extract of the original Stack Overflow Documentation
के तहत लाइसेंस प्राप्त है CC BY-SA 3.0
से संबद्ध नहीं है Stack Overflow