Генерация отчета в Firebase - PullRequest
1 голос
/ 08 апреля 2020

У меня есть база данных пожарной базы:

Firebase database

В ней хранятся кандидаты, которые могут быть президентами, секретарями или казначеями (категории).

В конце периода голосования я хочу создать отчет о том, кто победил, т. Е. О Президенте, проверить кандидата с наибольшим количеством голосов и получить его имя. это будет показано как победивший кандидат избирателям. Можно ли сделать это? У меня есть этот код:

DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference();
        DatabaseReference candidatesRef = rootRef.child("candidates");
        Query tatalVotesQuery = candidatesRef.orderByChild("tatalVotes").limitToLast(1);
        tatalVotesQuery.addValueEventListener(new ValueEventListener() {
            @Override
            public void onDataChange(DataSnapshot dataSnapshot){
                for (DataSnapshot childSnapshot: dataSnapshot.getChildren()) {
                    highestpresident = childSnapshot.getKey();

                    System.out.println("President highest score is: " + highestpresident);
                    pres.setText(highestpresident);
                }
            }
            @Override
            public void onCancelled(DatabaseError databaseError) {
                throw databaseError.toException(); // don't swallow errors
            }
        });

1 Ответ

1 голос
/ 08 апреля 2020

Возможно ли это сделать?

Конечно, это так. Самым простым решением для этого было бы создать запрос и упорядочить результаты следующим образом:

DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference();
DatabaseReference candidatesRef = rootRef.child("candidates");
Query tatalVotesQuery = candidatesRef.orderByChild("tatalVotes").limitToLast(1);

По умолчанию результаты располагаются в порядке возрастания. Таким образом, кандидат с наибольшим количеством голосов всегда будет последним.

Если вам нужно изменить их порядок, пожалуйста, проверьте мой ответ из следующего поста:

Как упорядочить данные базы данных Firebase в порядке возрастания или убывания?

Редактировать:

Согласно вашему комментарию:

Он дает ключ, а не имя кандидата

Он дает вам ключ, потому что это то, что вы запрашиваете. Если вам нужно ввести имя и фамилию, используйте следующие строки кода:

String firstname = childSnapshot.child("firstname").getValue(String.class);
String lastname = childSnapshot.child("lastname").getValue(String.class);
pres.setText(firstname + " " + lastname);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...