2

ich eine Feuerbasis Datenbank haben, die wie folgt aussieht:Erste null anstelle des Booleschen Wert

enter image description here

Query userQ = db.child("users").orderByChild("email").equalTo(email); 
    userQ.addListenerForSingleValueEvent(new ValueEventListener() { 
     @Override 
     public void onDataChange(DataSnapshot dataSnapshot) { 
      Log.d("DATASNAPSHOT", dataSnapshot.getValue()+""); 
      Log.d("IF QUEST",dataSnapshot.child("ifQuestUser")+" "+dataSnapshot.getChildren()); 
      for(DataSnapshot dataSnapshot1: dataSnapshot.getChildren()){ 
       Log.d(dataSnapshot1.getKey(), dataSnapshot1.getValue()+""); 
      } 
      User user = new User(
        dataSnapshot.child("email").getValue(String.class), 
        dataSnapshot.child("name").getValue(String.class), 
        dataSnapshot.child("lastName").getValue(String.class), 
        dataSnapshot.child("organization").getValue(String.class), 
        false 
        ); 
      dataSnapshot.getValue(User.class); 
      Log.d("USER", user+""); 
      if(user != null) { 
       Log.d("IS QUEST USer", user.getName()+" "+user.isIfQuestUser()+""); 
       if(user.isIfQuestUser()) { 
        checkForQuestForumUser(); 
       } else { 
        checkForNonQuestForumUser(); 
       } 
      } 
     } 

     @Override 
     public void onCancelled(DatabaseError databaseError) { 

     } 
    }); 

Returns:

DATASNAPSHOT: {user15={name=Pranjal, lastName=Srivastava, [email protected], ifQuestUser=true, organization=Primus}} 

Beim Aufruf datasnapshot.child('ifQuestUser'); es gibt Wert

IF QUEST: DataSnapshot { key = ifQuestUser, value = null } 

sein Wert zeigt null anstelle von true, und ich kann nicht verstehen, warum.

Antwort

1

Um ifQuestUser

Query userQ = db.child("users").orderByChild("email").equalTo(email); 
userQ.addListenerForSingleValueEvent(new ValueEventListener() { 
    @Override 
    public void onDataChange(DataSnapshot dataSnapshot) { 
     for(DataSnapshot dataSnapshot1: dataSnapshot.getChildren()){ 
      Users user = dataSnapshot1.getValue(Users.Class); 
      if(user.isIfQuestUser()) 
      { 
      // ... 
      } 

     } 

    } 

    @Override 
    public void onCancelled(DatabaseError databaseError) { 

    } 
}); 

zu bekommen Ich denke, man eine Modellklasse haben alle Users mit den Feldern in Feuerbasis db, und haben Art von ifQuestUser als Boolean.

0

Überprüfen Sie Ihre Namenskonventionen für die Deklaration von Schlüsseln zuerst.

Zweitens, verwenden Sie nicht Ihren Schlüssel in Ihrer Model-Klasse. Verwenden Sie so etwas user.isQuestUser() anstelle von user.isIfQuestUser(), da Firebase in solchen Fällen null zurückgibt. Ich bekam auch die gleiche Art von Bug.

Verwandte Themen