2

J'ai une base de données firebase qui ressemble à ceci:Obtenir null au lieu de la valeur booléenne

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) { 

     } 
    }); 

Retours:

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

En appelant datasnapshot.child('ifQuestUser'); il donne une valeur

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

sa valeur montre null au lieu de true, et je ne peux pas comprendre pourquoi.

Répondre

1

Pour obtenir 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) { 

    } 
}); 

Je suppose que vous avez une classe de modèle Users ayant tous les champs de firebase db, et avoir le type de ifQuestUser comme Boolean.

0

Vérifiez vos conventions de dénomination des clés de déclaration en premier. Deuxièmement, n'utilisez pas votre clé dans votre classe Model. Utilisez quelque chose comme ceci user.isQuestUser() au lieu de user.isIfQuestUser() parce que firebase renvoie null dans de tels cas. Je recevais aussi le même genre de bug.