0
所以我目前正在創建一個方法來搜索我的Firebase數據庫的用戶名。我users/
結構是這樣的:Android的Firebase搜索的孩子不打電話onDataChange
uid : {
displayName:value,
email:value,
otherUserData...
}
這對於如果我有我搜索的用戶的UID搜索的偉大工程,但我希望用戶能夠通過賬戶名,因爲搜索其他帳戶通過UID搜索將是荒謬的。目前,我試圖用這個方法來做到這一點:
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");
}
});
}
當我把這種方法,第一Log.d
呼叫接通,但既不裏面onDataChange的Log.d
電話獲取製造。思考?
使用query.addValueEvent ..而不是userRef.addValueEvent ... – Linxy
* facepalm *來發現此問題。雖然 – Jason
isnide for循環,你會想要user.getValue(..)而不是dataSnapshot.getValue() – Linxy