Recupero dati:
Nel tuo database, stai utilizzando un ID casuale che viene generato utilizzando il push()
, quindi se desideri recuperare i dati, procedi come segue:
Utilizzo di Firebase nell'app Android:
DatabaseReference ref=FirebaseDatabase.getInstance().getReference().child("users");
ref.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
for (DataSnapshot datas : dataSnapshot.getChildren()) {
String name=datas.child("name").getValue().toString();
}
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
Utilizzo di Firebase in Javascript:
firebase.database().ref().child("users").on('value', function (snapshot) {
snapshot.forEach(function(childSnapshot) {
var name=childSnapshot.val().name;
});
});
Qui hai l'istantanea (posizione dei dati), users
quindi esegui il ciclo all'interno di tutti gli ID casuali e recuperi i nomi.
Recupero dei dati per un utente specifico:
Ora se desideri recuperare informazioni solo per un utente specifico, devi aggiungere una query:
Utilizzo di Firebase nell'app Android:
DatabaseReference ref=FirebaseDatabase.getInstance().getReference().child("users");
Query queries=ref.orderByChild("name").equalTo("Alex");
queries.addListenerForSingleValueEvent(new ValueEventListener() {...}
Utilizzo di Firebase con Javascript
firebase.database().ref().child("users").orderByChild("name").equalTo("Alex").on('value', function (snapshot) {
snapshot.forEach(function(childSnapshot) {
var name=childSnapshot.val().name;
});
});
Usare orderByChild("name").equalTo("Alex")
è come dire where name="Alex"
quindi recupererà i dati relativi ad Alex.
Miglior modo:
La cosa migliore è utilizzare l'autenticazione Firebase, generando così un ID univoco per ciascun utente e utilizzandolo al posto di un ID casuale push()
, in questo modo non è necessario eseguire il ciclo tra tutti gli utenti poiché si dispone dell'ID e si può facilmente accedervi.
Innanzitutto, l'utente deve aver effettuato l'accesso, quindi è possibile recuperare l'ID univoco e collegare un listener per recuperare gli altri dati di quell'utente:
Utilizzo di Firebase con Android:
DatabaseReference ref = FirebaseDatabase.getInstance().getReference("users");
String uid = FirebaseAuthentication.getInstance().getCurrentUser().getUid();
ref.child(uid).addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
String name=dataSnapshot.child("name").getValue().toString();
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
Utilizzo di Firebase con Javascript:
var user = firebase.auth().currentUser;
var uid=user.uid;
firebase.database().ref().child("users").child(uid).on('value', function (snapshot) {
var name=snapshot.val().name;
});