如何通过if&else条件(Firebase,SDK)获得子级值

时间:2019-02-08 09:11:57

标签: firebase android-studio firebase-realtime-database

我的密码有问题。我要在登录页面中执行的操作是使用电子邮件/密码以admin身份登录,并且当“角色”等于admin时(另一个角色是Guest)。管理页面是MainActivity.class,访客页面是Home.class。有人可以帮我吗:)

enter image description here

这是我的代码:

    private void onAuthSuccess(FirebaseUser user) {
    DatabaseReference ref = 
    FirebaseDatabase.getInstance().getReference().child("users");
    ValueEventListener valueEventListener = new ValueEventListener() {

        @Override
        public void onDataChange(DataSnapshot dataSnapshot) {
            for(DataSnapshot ds : dataSnapshot.getChildren()) {
                String role = ds.getKey();

                DatabaseReference userKeyDatabase =  FirebaseDatabase.getInstance().getReference().child("users");
                ValueEventListener eventListener = new ValueEventListener() {
                @Override
                public void onDataChange(DataSnapshot dataSnapshot) {
            if (dataSnapshot == null) {
                Toast.makeText(getApplicationContext(), "****NULLL****", Toast.LENGTH_LONG).show();

            } else if(dataSnapshot.child("role").getValue().equals("Admin")) {
                startActivity(new Intent(SignInActivity.this, MainActivity.class));
                finish();
            }else{
                startActivity(new Intent(SignInActivity.this, Home.class));
                finish();
            }
        }

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

        userKeyDatabase.addListenerForSingleValueEvent(eventListener);
    }}
            @Override
            public void onCancelled(DatabaseError databaseError) {}
        };
       ref.addListenerForSingleValueEvent(valueEventListener);
    }

我也不确定我的代码:(

1 个答案:

答案 0 :(得分:0)

check role of users登录,您可以执行以下操作

    FirebaseDatabase firebaseDatabase=FirebaseDatabase.getInstance();
                                DatabaseReference db=firebaseDatabase.getReference().child("users");

     db.orderByChild("email").equalTo(email).addListenerForSingleValueEvent(new ValueEventListener() {
                                @Override
                                public void onDataChange(@NonNull DataSnapshot dataSnapshot) 
                                        if(dataSnapshot.exists()){

                                            Log.d("user exits","usere hai");
                                           String value =dataSnapshot.child("role").getValue().toString();

                                           if(value.equals("Admin") && value != null){
 startActivity(new Intent(SignInActivity.this, MainActivity.class));
                finish();
                                        }else{
 startActivity(new Intent(SignInActivity.this, Home.class));
                finish();
                                        }

                                }

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