检查数据是否存在于Firebase中

时间:2018-10-07 11:51:49

标签: android firebase firebase-realtime-database

早安,

我正在考虑是否根据用户的Student_id对用户进行投票来对用户进行身份验证。我试图将数据检索到android studio,但它总是落在其他地方。

这是我的代码:

 @Override
    public boolean onNavigationItemSelected(@NonNull MenuItem item) {
        switch (item.getItemId()) {
            case R.id.voter_home:
                Fragment_Voter_Home fragment = Fragment_Voter_Home.newInstance(Pstud_no);
                getSupportFragmentManager().beginTransaction().replace(R.id.voter_fragment,
                        fragment).commit();
                break;
            case R.id.nav_voter_ssc_president:
                userReference = FirebaseDatabase.getInstance().getReference("vote");
                Query VerifySSCPresident = userReference.orderByChild("student_id").equalTo(Pstud_no);
                VerifySSCPresident.addValueEventListener(new ValueEventListener() {
                    @Override
                    public void onDataChange(DataSnapshot dataSnapshot) {

                        if (dataSnapshot.child(Pstud_no).exists())
                        {
                            Toast.makeText(Voter_Screen.this, "Already Voted", Toast.LENGTH_SHORT).show();
                        }
                        else
                        {
                            Intent intent = new Intent(Voter_Screen.this, Voter_SSC_President.class);
                            startActivity(intent);
                        }
                    }
                    @Override
                    public void onCancelled(DatabaseError databaseError) {

                    }
                });
                break;
            case R.id.nav_voter_csc_president:
                    Intent intent1 = new Intent(Voter_Screen.this, Voter_CSC_President.class);
                    startActivity(intent1);
                break;
        }

        drawer.closeDrawer(GravityCompat.START);
        return true;
    }

Pstud_no是当前用户。

这是我的Firebase表。

enter image description here

您有什么建议可以改善我的代码吗?谢谢。

1 个答案:

答案 0 :(得分:1)

由于您已经在查询Pstud_no,因此无需使用child中的键来检查onDataChange节点。相反,您可以只检查查询是否返回了存在的数据快照:

Query VerifySSCPresident = userReference.orderByChild("student_no").equalTo(Pstud_no);
VerifySSCPresident.addValueEventListener(new ValueEventListener() {
    @Override
    public void onDataChange(DataSnapshot dataSnapshot) {
        if (dataSnapshot.exists()) {
            Toast.makeText(Voter_Screen.this, "Already Voted", Toast.LENGTH_SHORT).show();
        }
        else {
            Intent intent = new Intent(Voter_Screen.this, Voter_SSC_President.class);
            startActivity(intent);
        }
    }
    @Override
    public void onCancelled(DatabaseError databaseError) {
        throw databaseError.toException(); // don't ignore errors
    }