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