2017-04-12 14 views
0

Ich habe einige Probleme mit meiner Datenbank, und die Dokumentation scheint sehr verwirrend, ich kann nicht herausfinden, wie das zu lösen, im Grunde habe ich meine Benutzerdaten in der Firebase und Ich möchte sehen, ob in meinem Benutzer mit einer ID ich bereits den Schlüssel Benutzername habe, wenn ja ich mit einigen Daten meines Formulars aktualisieren möchte, wenn nein, ich möchte einen Wert basierend auf meinem Formular hinzufügen, aber wenn ich wissen möchte, wie wenn die ID bereits überprüfen existieren, ich habe dies:Überprüfen Sie, ob ein Schlüssel bereits in Firebase vorhanden ist

auth = FirebaseAuth.getInstance(); 
     database = FirebaseDatabase.getInstance(); 
     myRef = database.getReference(); 
     userId = auth.getCurrentUser().getUid(); 
     user = myRef.child("Users").child(userId); 
     Log.d("test1",String.valueOf(user.child("age").getKey())); 
     if(user.child("username").co){ 
      usernameTxt.setText(user.child("username").toString()); 
     } 
     if(user.child("age") != -1){ 
      usernameTxt.setText(user.child("age").toString()); 
     } 

data

+0

http://stackoverflow.com/questions/38948905/how-can-i-check-if-a-value-exists-already-in-a-firebase-data-class-anroid http: // stackoverflow.com/questions/24824732/test-if-a-data-exist-in-firebase Überprüfen Sie diese –

+0

was ist das Datasnapshot, ich verstehe nicht sehr gut die Dokumentation –

+0

@Filipe können Sie Ihre Beispieldatenbank Baum . –

Antwort

0

Versuchen Sie, diese

final FirebaseAuth auth = FirebaseAuth.getInstance(); 
    DatabaseReference mDatabase=FirebaseDatabase.getInstance().getReference().child("Users").child(auth.getCurrentUser().getUid()); 
    mdatabase.addListenerForSingleValueEvent(new ValueEventListener() { 
     @Override 
     public void onDataChange(DataSnapshot dataSnapshot) { 

      if(dataSnapshot.hasChild("username")){ 
       //IT EXISTS 
      } 
      else{ 
       //IT DOESNT EXISTS 
      } 
     } 

     @Override 
     public void onCancelled(DatabaseError databaseError) { 

     } 
    }); 
+0

Ich fühle ich fast habe es getan, aber wie kann ich einen einzelnen Wert von Snapshot retrive? Ich habe dies getan: dataSnapshot.child ("username"). getValue(), überprüft, dass mit logcat und es gibt mir das: https://friendlymanager-3b7a2.firebaseio.com/Users/g7LWSXBP2WYwBbDqPS82oEpILA22/username: S –

+0

Sie müssen caste it benutze getValue (String.class); –

+0

Haben Sie meine Antwort getestet? –

Verwandte Themen