因此,我正在创建一种按用户名搜索Firebase数据库的方法。我的users/
结构如下所示:
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
调用都不会被调用。想法?
答案 0 :(得分:0)
问题是我被拒绝阅读的权限,结果onDataChange()
没有被调用,但是onCancelled()
。我通过Log.d()
方法
onCancelled()
调用发现了这一点