2016-06-01 18 views
9

में नया डेटा कैसे जोड़ें फ़ायरबेस रीयलटाइम डेटाबेस में नया व्यक्ति जोड़ने के लिए यह मेरा तर्क है। लेकिन एक नई प्रविष्टि बनाने के बजाय यह पुराने डेटा को नए के साथ अपडेट कर रहा है।फ़ायरबेस एंड्रॉइड

buttonSave.setOnClickListener(new View.OnClickListener() { 
     public void onClick(View v) { 


      /* 
      new Firebase(Config.FIREBASE_URL) 
        .push() 
        .child("title") 
        .setValue(text.getText().toString()); 
      */ 

      Firebase ref = new Firebase(Config.FIREBASE_URL); 
      String name = editTextName.getText().toString().trim(); 
      String address = editTextAddress.getText().toString().trim(); 

      //Creating Person object 
      Person person = new Person(); 

      //Adding values 
      person.setName(name); 
      person.setAddress(address); 
      ref.child("Person").setValue(person); 

     } 
    }); 


    new Firebase(Config.FIREBASE_URL).addValueEventListener(new ValueEventListener() { 
     @Override 
     public void onDataChange(DataSnapshot snapshot) { 
      for (DataSnapshot postSnapshot : snapshot.getChildren()) { 
       //Getting the data from snapshot 
       Person person = postSnapshot.getValue(Person.class); 

       //Adding it to a string 
       String string = "Name: "+person.getName()+"\nAddress: "+person.getAddress()+"\n\n"; 

       //Displaying it on textview 
       textViewPersons.setText(string); 
      } 
     } 

     @Override 
     public void onCancelled(FirebaseError firebaseError) { 
      System.out.println("The read failed: " + firebaseError.getMessage()); 
     } 
    }); 

यहां क्या गलत है? क्या कोई इस पर मेरी मदद कर सकता है?

+0

नई Firebase डॉक्स के माध्यम से जाओ, आप उपयोग कर रहे पुराने एपीआई –

+0

इस पर नजर है यह आपकी मदद की जा सकती है: -http: //stackoverflow.com/questions/37338409/rerofit-firebase/37338410#37338410 – sushildlh

+2

@VeereshCharantimath नए फायरबेस डॉक्स बिल्कुल सहायक नहीं हैं। वे दस्तावेज़ फायरबेस में उच्च स्तरीय विशेषज्ञों के लिए हैं, वे उन लोगों के लिए नहीं हैं जो इसके लिए नए हैं। –

उत्तर

23

तुम हमेशा ही रेफरी

Person person = new Person(); 
//Adding values 
person.setName(name); 
person.setAddress(address); 
ref.child("Person").setValue(person); 

Check the doc उपयोग कर रहे हैं:

इस तरह से setValue() का उपयोग किसी भी बच्चे नोड्स सहित निर्दिष्ट स्थान के डेटा, अधिलेखित कर देता है।

अपने मामले में आप इस कारण के लिए एक ही डेटा अधिभावी कर रहे हैं।

आपको push() विधि का उपयोग प्रत्येक बार जब कोई नया बच्चा निर्दिष्ट फ़ायरबेस संदर्भ में जोड़ा जाता है तो एक अद्वितीय आईडी उत्पन्न करने के लिए उपयोग करना चाहिए।

mAuth = FirebaseAuth.getInstance(); 
FirebaseUser user = mAuth.getCurrentUser(); 
String userId = user.getUid(); 
Firebase rootRef = new Firebase(Config.USER_URL); 
Firebase userRef = rootRef.child("Users"); 
Person newUser = new Person(); 
newUser.setFirstName(firstName); 
newUser.setLastName(lastName); 
userRef.child(userId).setValue(newUser); 

userId भिन्न होता है जब लॉगिंग उपयोगकर्ता अलग है, इसलिए, आप हमेशा एक के लिए एक नया डेटा सूची के लिए जाना जाएगा:

Person person = new Person(); 
//Adding values 
person.setName(name); 
person.setAddress(address); 
Firebase newRef = ref.child("Person").push(); 
newRef.setValue(person); 
+0

आपकी प्रतिक्रिया के लिए धन्यवाद। जोड़ना अब उम्मीद के रूप में काम कर रहा है। क्या आप कृपया मेरी सहायता कर सकते हैं कि मुझेडेटा चेंज में क्या परिवर्तन करना चाहिए ताकि यह डेटाबेस में जोड़े गए सभी व्यक्तियों को प्रदर्शित कर सके। – user3559471

+0

आप संदर्भ के रूप में ref.child ("व्यक्ति") का उपयोग कर onChildAdded() कॉलबैक का उपयोग कर सकते हैं। –

0

आप "Person" बच्चे को संदर्भित कर रहे हैं और प्रत्येक बार जब आप buttonSave पर क्लिक करते हैं तो यह मान (setValue()) सेट कर रहा है, जो केवल उस बच्चे को संपादित करता है। इसके बजाय push() का उपयोग करने का प्रयास करें।

0

आप इस तरह के रूप में, अपने डेटा के लिए एक नया बाल जोड़ सकते हैं उपयोगकर्ता के तहत उपयोगकर्ता आईडी में नया लॉग-इन-यूजर।

संबंधित मुद्दे