So erstelle ich derzeit eine Methode, meine Firebase-Datenbank nach Benutzername zu durchsuchen. Meine users/
Struktur sieht wie folgt aus:Android Firebase-Suche nach Kind, das nicht onDataChange anruft
uid : {
displayName:value,
email:value,
otherUserData...
}
, die für die Suche funktioniert gut, wenn ich die Benutzer-ID des Benutzers haben ich suche, aber ich möchte, dass die Benutzer für andere Konten suchen können durch Account-Namen, weil Suche nach UID wäre lächerlich. Derzeit bin ich versucht, dies zu tun mit dieser Methode:
public void getUserByUsername(String username, final DatabaseCallback c) {
Log.d(TAG, "getByUsername");
DatabaseReference userRef = FirebaseDatabase.getInstance().getReference("users");
Query query = userRef.orderByChild("displayName").equalTo(username);
query.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
for (DataSnapshot user : dataSnapshot.getChildren()) {
Log.d(TAG, "Found user " + dataSnapshot.getValue());
User u = user.getValue(User.class);
}
Log.d(TAG, "No user found");
}
@Override
public void onCancelled(DatabaseError databaseError) {
Log.d(TAG, "Cancelled");
}
});
}
Wenn ich diese Methode aufrufen, die erste Log.d
Anruf geht durch, aber keiner der Log.d
Anrufe innerhalb OnDataChange gemacht bekommen. Gedanken?
benutze query.addValueEvent .. anstelle von userRef.addValueEvent ... – Linxy
* facepalm *. Funktioniert immer noch nicht – Jason
isnide die for-Schleife, Sie wollen user.getValue (..) anstelle von dataSnapshot.getValue() – Linxy