Android Firebase:检查当前用户ID是否与用户ID列表匹配?

时间:2017-11-08 13:04:26

标签: android firebase firebase-realtime-database

我试图检查登录的用户ID是否与当前用户ID匹配,以验证用户类型。

我使用的是exists()方法,但似乎无法正常工作。见代码:

private String userID = FirebaseAuth.getInstance().getCurrentUser().getUid();
private DatabaseReference database = FirebaseDatabase.getInstance().getReference().child("basenode");

database.child("sand").child("administratorCountry").addListenerForSingleValueEvent(new ValueEventListener() {

        @Override
        public void onDataChange(DataSnapshot dataSnapshot) {
            if (dataSnapshot.child(userID).exists()) {
                System.out.println("THIS IS THE OUTPUT: "+ "TRUE");
            }else{
                System.out.println("THIS IS THE OUTPUT: "+ "FALSE");
            }
        }

        @Override
        public void onCancelled(DatabaseError databaseError) {

        }
    });

请参阅Firebase结构:

enter image description here

我将不胜感激任何帮助!谢谢!

已更新

每个用户ID中的数据:

enter image description here

1 个答案:

答案 0 :(得分:0)

我建议将侦听器直接附加到userID节点,然后检查返回的数据是否存在:

private String userID = FirebaseAuth.getInstance().getCurrentUser().getUid();
private DatabaseReference database = FirebaseDatabase.getInstance().getReference();

database.child("sand")
    .child("administratorCountry")
    .child(userID) // Create a reference to the child node directly
    .addListenerForSingleValueEvent(new ValueEventListener() {
            @Override
            public void onDataChange(DataSnapshot dataSnapshot) {
                // This callback will fire even if the node doesn't exist, so now check for existence
                if (dataSnapshot.exists()) {
                    System.out.println("The node exists.");
                } else {
                    System.out.println("The node does not exist.");
                }
            }

            @Override
            public void onCancelled(DatabaseError databaseError) { }
        });

您不需要指定child("basenode"),因为getReference()方法直接指向数据库的根目录,因此您可以从child("basenode")中删除database变量。