Сортировать базу данных firebase по дочернему значению - PullRequest
0 голосов
/ 05 февраля 2020

Я создаю простое приложение с помощью Firebase. Моя структура базы данных Firebase выглядит следующим образом:

user:{ 
   uid:{ 
      name:user1,
      age:22,
      score:80,
      address:mycity,
      uid:uid
   }
},

contact:{ 
   uid:{ 
      phone:123456
   }
}

И это мой ссылочный код базы данных.

mRef = db.getInstance().getReference("user");

mRef.orderByChild("city").equalTo(mycity)
 .addValueEventListener(new ValueEventListener {


   @Override
   public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
    for (DataSnapshot snapshot: dataSnapshot.getChildren()) {

     HashMap < String, String > hashmap = new HashMap < > ();

     hashmap.put("name", snapshot.child("name").getValue());
     hashmap.put("score", snapshot.child("score").getValue());

     userarr.add(hashmap);

     contact = db.getInstance().getReference("contact").child(snapshot.child("uid").getValue());

     contact.addValueEventListener(new ValueEventListener {

      @Override
      public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
       contactHashmap.put("phoneNumber", dataSnapshot.child("phone").getValue());

       contactarr.add(contactHashmap);

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

     });


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

    });

  }
 }

Я хочу отсортировать данные по «счету». Если я сортирую это с "Comparator" на стороне клиента. Данные двух массивов не могут быть сопоставлены. Как сортировать данные по «счету».

Извините за мой плохой разговор по-английски sh.

Редактировать: Я хочу получить базу пользователей по тому же региону (адресу). И сортируйте их по «счету» (по возрастанию или по убыванию)

1 Ответ

0 голосов
/ 05 февраля 2020

Попробуйте вот так

// Sort by score
Query myTopScoreQuery = databaseReference.child("user").child(mycity).orderByChild("score");
myTopScoreQuery.addChildEventListener(new ChildEventListener() {
    // TODO: implement the ChildEventListener methods as documented above
    // ...
});

Или

// Sort by score
Query myTopScoreQuery = databaseReference.child("user").child(mycity).orderByChild("uid/score");
myTopScoreQuery.addChildEventListener(new ChildEventListener() {
    // TODO: implement the ChildEventListener methods as documented above
    // ...
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...