java - फायरबेस में विशिष्ट पुशआईडी कैसे प्राप्त करें?




android firebase (2)

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


इसे इस्तेमाल करे:

  1. इसे इस तरह स्टोर करने से पहले कमेंट को प्राप्त करें:

    स्ट्रिंग CommentId = myRef.push ()। GetKey ();

  2. टिप्पणी डेटा के साथ आईडी सहेजें:

    myRef.child (CommentId) .Set (yourValuesHashMap);

  3. अब, जब आप टिप्पणियों को पुनः प्राप्त करते हैं, तो आपके पास प्रत्येक टिप्पणी की आईडी होगी और आप उपयोग कर सकते हैं कि पसंद डालें।


ऐसे दो तरीके हैं जिनसे आप इसे हासिल कर सकते हैं। इसलिए यदि आप एक विशिष्ट टिप्पणी तक पहुँचना चाहते हैं, तो आपको कुछ ऐसा जानना चाहिए जो उस pcommentll की विशिष्ट पहचान करता हो। पहला उपाय उस रैंडम आईडी को सटीक क्षण में एक चर में स्टोर करना होगा, जब आप डेटाबेस के लिए push() विधि का उपयोग करके एक नई टिप्पणी कर रहे हैं। उस आईडी को प्राप्त करने के लिए, आप कोड की निम्नलिखित पंक्तियों का उपयोग कर सकते हैं:

DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference();
String commentId = rootRef
    .child(UserId)
    .child(PhotoId)
    .child("comments")
    .push()
    .getKey();

आप टिप्पणी आईडी के अंदर भी उस आईडी को सहेज सकते हैं यदि आपको इसे बाद में उपयोग करने की आवश्यकता है। तो यह कोड में कैसा दिखता है:

Map<String, Object> map = new HashMap<>();
map.put("noOfLikes", 0);
map.put("commentId", commentId);
rootRef
    .child(UserId)
    .child(PhotoId)
    .child("comments")
    .child(commentId)
    .updateChildren(map);

एक बार जब आपके पास यह key , तो आप इसे अपने संदर्भ में पसंद की संख्या को अपडेट करने के लिए उपयोग कर सकते हैं। इस प्रकार का ऑपरेशन आमतौर पर फायरबेस लेनदेन का उपयोग करके किया जाता है और इसके लिए मैं इस post से अपना उत्तर देखने की सलाह देता हूं जिसमें मैंने बताया है कि स्कोर प्रापर्टी को कैसे अपडेट किया जाए लेकिन पसंद के मामले में समान सिद्धांत।

दूसरा दृष्टिकोण इस तरह से एक नया शीर्ष स्तर संग्रह बनाना होगा:

Firebase-rot
   |
   --- comments
         |
         --- commentId
                |
                --- noOfLikes: 1

इस समाधान का उपयोग करना आपके लिए डेटाबेस को क्वेरी करने के लिए अधिक आसान होगा क्योंकि लाइक की संख्या प्राप्त करने के लिए आपको केवल इस सरल संदर्भ की आवश्यकता होगी:

DatabaseReference noOfLikesRef = rootRef
    .child("comments")
    .child(commentId)
    .child("noOfLikes");
noOfLikesRef.addListenerForSingleValueEvent(/* ... */);





firebase-realtime-database