web-dev-qa-db-fra.com

Récupération de données spécifiques à partir de la base de données Firebase

Je crée une application de discussion sur Android à l'aide de la base de données Firebase et de Java. Chaque fois que l'utilisateur est enregistré pour la première fois, il stocke son nom d'utilisateur dans la base de données sous les noeuds user/UserID/profile/username. Le nom d'utilisateur est stocké à l'aide d'une classe d'utilisateur. C'est ici que la valeur du nom d'utilisateur est stockée. Cependant, quand j'essaie quelque chose comme 

mDatabase.child("users").child(UserID).child("profile").child("username").toString();

Cela me donne le chemin du nom d'utilisateur, mais pas le nom d'utilisateur lui-même. Est-ce que quelqu'un sait comment obtenir la valeur du nom d'utilisateur lui-même?

EDIT: Cela me donne une erreur quand je cours 

DataSnapshot.child("users").child(mUserID).child("profile").child("username").getValue().toString();

Voici ce que ma base de données Firebase montre sous l’ID utilisateur.

Firebase database profile

4

Vous n'obtenez pas la valeur correctement. Vous devez attacher un écouteur à votre enfant et obtenir des mises à jour. Vous faites ça comme ça:

// Get a reference to your user
final FirebaseDatabase database = FirebaseDatabase.getInstance();
DatabaseReference ref = database.getReference("server/path/to/profile");

// Attach a listener to read the data at your profile reference
ref.addValueEventListener(new ValueEventListener() {
    @Override
    public void onDataChange(DataSnapshot dataSnapshot) {
        Profile profile = dataSnapshot.getValue(Profile.class);
        System.out.println(profile.getUsername());
    }

    @Override
    public void onCancelled(DatabaseError databaseError) {
        System.out.println("The read failed: " + databaseError.getCode());
    }
});

Vous pouvez trouver plus d'informations et des exemples sur le site Firebase website . N'oubliez pas que vous ne demandez pas à obtenir des données à partir de Firebase. Vous attachez des écouteurs aux enfants, puis vous obtenez les données de l'écouteur. Cet exemple suppose que vous avez un modèle Profile, avec une méthode pour obtenir le nom d'utilisateur. Cela renverrait votre objet Profile et vous permettrait d'extraire toutes les données nécessaires de cet objet. 

3
BlackHatSamurai

Essayez ceci en oubliant la méthode getValue () qui renverra la valeur et non le chemin mDatabase.child("users").child(UserID).child("profile").child("username").getValue().toString();

0
Oussema Aroua