Проверьте данные, если они существуют в firebase - PullRequest
0 голосов
/ 07 октября 2018

Добрый день,

Я думал об аутентификации пользователя, если за него проголосуют на основании его student_id.Я пытался восстановить данные в андроид студии, но они всегда падают на другое.

Вот мой код:

 @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 голосов
/ 07 октября 2018

Поскольку вы уже запрашиваете 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
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...