2016-06-15 5 views
0

Ich habe eine Datenbank, aus der ich einen bestimmten Knoten auswählen möchte. Zum Beispiel möchte ich in meinem Fall die Knoten auswählen, deren Benutzername "fatma" ist. Also, wie kann ich das in Android tun? enter image description hereFehler beim Prellen auf den Typ

public class User {

public String Benutzername, E-Mail, Passwort, dateOfBirth, signUpDate;

public User(String username, String email, String password,String dateOfBirth,String signUpDate) { 
    this.username = username; 
    this.email = email; 
    this.password = password; 
    this.dateOfBirth=dateOfBirth; 
    this.signUpDate=signUpDate; 
} 
public User(){ 

} 

public String getEmail() { 
    return email; 
} 

public void setEmail(String email) { 
    this.email = email; 
} 

public String getUsername() { 
    return username; 
} 

public void setUsername(String username) { 
    this.username = username; 
} 

public String getPassword() { 
    return password; 
} 

public void setPassword(String password) { 
    this.password = password; 
} 

public String getDateOfBirth() { 
    return dateOfBirth; 
} 

public void setDateOfBirth(String dateOfBirth) { 
    this.dateOfBirth = dateOfBirth; 
} 

public String getSignUpDate() { 
    return signUpDate; 
} 

public void setSignUpDate(String signUpDate) { 
    this.signUpDate = signUpDate; 
} 

@Override 
public String toString() { 
    return "User{" + 
      "username='" + username + '\'' + 
      ", email='" + email + '\'' + 
      ", password='" + password + '\'' + 
      ", dateOfBirth='" + dateOfBirth + '\'' + 
      ", signUpDate='" + signUpDate + '\'' + 
      '}'; 
} 

}

Firebase.setAndroidContext(getApplicationContext()); 
      final Firebase ref = new Firebase("https://app.firebaseio.com/"); 
      /* String username,password; 
      username=txtUsername.getText().toString(); 
      password=txtPassword.getText().toString(); 
      User authentificatedUser=new User(username,password,null,null,null); 
      ConnectTask connectTask=new ConnectTask(authentificatedUser); 
    txtUsername.setText(connectTask.getTest());*/ 

      Query query = ref.orderByChild("username").equalTo("testme"); 
      query.addListenerForSingleValueEvent(new ValueEventListener() { 
       @Override 
       public void onDataChange(DataSnapshot dataSnapshot) { 
        User user = dataSnapshot.getValue(User.class); 
        txtUsername.setText(user.getUsername()); 
       } 

       @Override 
       public void onCancelled(FirebaseError firebaseError) { 

       } 

      }); 

06-15 13: 50: 59,067 7510-7510/com.sifast.appsocle E/Android Runtime: fatal EXCEPTION: main Prozess: com.sifast.appsocle, PID : 7510 com.firebase.client.FirebaseException: Fehler beim Schreiben auf bei com.firebase.client.DataSnapshot.getValue (DataSnapshot.java:183) unter com.sifast.appsocle.Login $ 2 $ 1.onDataChange (Login. Java: 71) bei com.f irebase.client.Query $ 1.onDataChange (Query.java:158) bei com.firebase.client.core.ValueEventRegistration.fireEvent (ValueEventRegistration.java:45) bei com.firebase.client.core.view.DataEvent.fire (DataEvent.java:45) bei com.firebase.client.core.view.EventRaiser $ 1.run (EventRaiser.java:38) bei android.os.Handler.handleCallback (Handler.java:739) bei Android. os.Handler.dispatchMessage (Handler.java:95) bei android.os.Looper.loop (Looper.java:148) bei android.app.ActivityThread.main (ActivityThread.java:5417) bei java.lang. reflect.Method.invoke (native Methode) bei com.andr oid.internal.os.ZygoteInit $ MethodAndArgsCaller.run (ZygoteInit.java:726) bei com.android.internal.os.ZygoteInit.main (ZygoteInit.java:616) Verursacht von: com.fasterxml.jackson.databind. exc.UnrecognizedPropertyException: Unbekanntes Feld "-KKJOx4bBAgpJ3UPD-0a" (Klasse com.sifast.appsocle.user.User), nicht als ignorierbar gekennzeichnet (5 bekannte Eigenschaften:, "signUpDate", "Benutzername", "dateOfBirth", "password" , "email"]) um [Quelle: [email protected]; Zeile: 1, Spalte: 26] (über die Referenzkette: com.sifast.appsocle.user.User ["- KKJOx4bBAgpJ3UPD-0a"]) unter com.fasterxml.jackson.databind.DeserializationContext.reportUnknownProperty (DeserializationContext.java:555) bei com.fasterxml.jackson.databind.deser.std.StdDeserializer.handleUnknownProperty (StdDeserializer.java:708) bei com.fasterxml.jackson.databind.deser.BeanDeserializerBase.handleUnknownProperty (BeanDeserializerBase.java:1160) bei com .fasterxml.jackson.databind.deser.BeanDeserializer.deserializeFromObject (BeanDeserializer.java:315) bei com.fasterxml.jackson.databind.deser.BeanDeserializer.deserialize (BeanDeserializer.java:121) bei com.fasterxml.jackson.databind .ObjectMapper._readMapAndClose (Obj ectMapper.java:2888) bei com.fasterxml.jackson.databind.ObjectMapper.readValue (ObjectMapper.java:2034) bei com.firebase.client.DataSnapshot.getValue (DataSnapshot.java:181) bei com.sifast. appsocle.Login $ 2 $ 1.onDataChange (Login.java:71) unter com.firebase.client.Query $ 1.onDataChange (Query.java:158) unter com.firebase.client.core.ValueEventRegistration.fireEvent (ValueEventRegistration.java : 45) bei com.firebase.client.core.view.DataEvent.Feuer (DataEvent.java:45) bei com.firebase.client.core.view.EventRaiser $ 1.run (EventRaiser.java:38) bei android.os.Handler.handleCallback (Handler.java:739) bei Android .os.Handler.dispatchMessage (Handler.java:95) bei android.os.Looper.loop (Looper.java:148) bei android.app.ActivityThread.main (ActivityThread.java:5417) bei java.lang .reflect.Method.invoke (Native Methode) bei com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run (ZygoteInit.java:726) bei com.android.internal.os.ZygoteInit.main (ZygoteInit.java: 616)

+0

Der komplette logcat Fehler würde sehr nützlich sein, aber ich kann sagen, dass 'zu Baumuster zur abprallen kann nicht bedeutet, dass ein Feldtyp in der Datenbank doesn‘ t passen Sie den entsprechenden Variablentyp in Ihrem Objekt – Sunshinator

+0

PID: 7510 com.firebase.client.FirebaseException: Konnte nicht auf Typ bei com.firebase.client.DataSnapshot.getValue (DataSnapshot.java:183) at com.sifast .appsocle.Login $ 2 $ 1.onDataChange (Login.java:71) – fatma19

+0

Ich würde alles brauchen. Sie können Ihre Frage bearbeiten, um sie hinzuzufügen. – Sunshinator

Antwort

1

Fügen Sie einen Verweis auf Benutzerknoten hinzu, dies sollte das Problem lösen. Durch diese Referenz (https://app.firebaseio.com/) werden alle Daten heruntergeladen, die zu einem Fehler führen. Fehler beim Zurücksetzen auf einen Typ. @ fatma19 Sie sollten diese Referenz verwenden: https://app.firebaseio.com/users. Ok, wenn wir korrekte Referenz haben, können wir Abfragedaten starten. Wieder

Firebase firebase = new Firebase("https://app.firebaseio.com/users"); 
Query query = firebase.orderByChild("username").equalTo("testme"); 
query.addListenerForSingleValueEvent(new ValueEventListener() { 
    @Override 
    public void onDataChange(DataSnapshot snapshot) { 
     //if u have unique usernames 
     User user = snapshot.getValue(User.class); 
     //if u haven't unique usernames 
     Iterable<DataSnapshot> dataSnapshots = snapshot.getChildren(); 
       List<User> users = new ArrayList<>(); 
       for(DataSnapshot dataSnapshot1 : dataSnapshots){ 
        users(dataSnapshot1.getValue(User)); 
       } 
     //or 
     List<User> users = new ArrayList<>(); 
     for(DataSnapshot dataSnapshot : snapshot.getChildren()){ 
      users.add(dataSnapshot.getValue(User.class); 
     } 
    } 
    @Override 
    public void onCancelled(FirebaseError firebaseError) { 
    } 
}); 
+0

Könnten Sie schreiben, welche Daten in DataSnapshot zu Ihnen kommen? – Skye

+0

Benutzer user = dataSnapshot.getValue (User.class); – fatma19

+0

ich änderte es aber immer das gleiche – fatma19

3

Ihre Firebase Referenz falsch.

Unrecognized field "-KKJOx4bBAgpJ3UPD-0a" 

Das bedeutet, dass Sie in dem Knoten user sind und Sie versuchen, in User-KKJOx4bBAgpJ3UPD-0a auf ein Feld zu konvertieren. Ich schätze, Sie haben/haben mehr als eine User. So mögen Sie wahrscheinlich die Snapshot Kinder eines nach dem anderem mit analysieren:

for(DataSnapshot user : dataSnapshot.getChildren()){ 
    User myUser = user.getValue(User.class); 
} 
+0

gleichen Fehler:/!!!!! – fatma19

+0

@ fatma19 Post hier Ihre Referenz auf Benutzer Knoten – Skye

+0

@ fatma19 Ausrufezeichen sind nicht hilfreich. Wenn nach der Änderung immer noch dasselbe Problem auftritt, bearbeiten Sie Ihre Frage (http://stackoverflow.com/posts/37838513/edit), um den aktualisierten Code hinzuzufügen. –

Verwandte Themen