由儿童调用onDataChange的Android Firebase搜索

时间:2017-03-01 17:10:57

标签: android firebase firebase-realtime-database

因此,我正在创建一种按用户名搜索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调用都不会被调用。想法?

1 个答案:

答案 0 :(得分:0)

问题是我被拒绝阅读的权限,结果onDataChange()没有被调用,但是onCancelled()。我通过Log.d()方法

中的onCancelled()调用发现了这一点