Получение одного ребенка после использования orderByChild - PullRequest
0 голосов
/ 19 июня 2020

У меня есть модель людей, у которой есть имя, возраст и пол. Теперь я хочу отфильтровать по возрасту и получить только имя самого старшего человека. Однако я не могу найти способ сделать это. Вот как выглядят мои данные. Узел людей

До сих пор мне удавалось получить всю информацию о человеке следующим образом:

                Query oldest = FirebaseDatabase.getInstance().getReference("people").orderByChild("age").limitToLast(1);
                    oldest.addListenerForSingleValueEvent(new ValueEventListener() {
                    @Override
                    public void onDataChange(DataSnapshot dataSnapshot) {
                        for(DataSnapshot datas: dataSnapshot.getChildren()){
                            People peolpe =  datas.getValue(People.class);
            
                        }
                        displayName(people.name);
            
                    }
                    @Override
                    public void onCancelled(DatabaseError databaseError) {
                        Toast.makeText(MainActivity.this, ""+databaseError, Toast.LENGTH_SHORT).show();
                    }
                });

1 Ответ

0 голосов
/ 27 июня 2020

Когда вы используете следующий запрос:

Query oldest = FirebaseDatabase.getInstance().getReference("people").orderByChild("age").limitToLast(1);

Вы получаете самого молодого человека, потому что это поведение Firebase по умолчанию. Если вы хотите изменить порядок, вы можете сделать это на стороне клиента , или вы можете сделать эти числа отрицательными, а не положительными. Таким образом, имея отрицательные значения для свойства age, вы получите желаемый результат, поскольку у самого старшего человека будет «-25» лет. Единственное, что осталось сделать, - это удалить этот отрицательный знак в вашем коде. Теперь вы готовы к go, потому что в вашем запросе нет ничего, что нужно изменить.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...