2016-12-21 7 views
1

Это моя Firbase структура this my firbase database structureКак применить несколько запросов в firbase android?

базы данных я хочу, чтобы получить данные, такие как

категории = "кошка" и уровень = "1"

Вот мой код

Query query = firebaseReference.orderByChild("category").equalTo("cat1").limitToFirst(20); 

     query.addListenerForSingleValueEvent(new ValueEventListener() { 
      @Override 
      public void onDataChange(DataSnapshot dataSnapshot) { 

       UTILS.Log.e(TAG, "List Of User Count " + dataSnapshot.getChildrenCount()); 

       for (DataSnapshot dataSnapshot1 : dataSnapshot.getChildren()) { 

        //FCreateUSer modelRegister = dataSnapshot1.getValue(FCreateUSer.class); 
        UTILS.Log.e(TAG, "User Email :" + dataSnapshot1.child("question").getValue()); 

       } 
      } 

      @Override 
      public void onCancelled(DatabaseError databaseError) { 

      } 

     }); 

это wrok, но как использовать два условия в firbase, я попробую два orderByChild, но это ошибка java.lang.IllegalArgumentException: вы не можете комбинировать несколько звонков OrderBy!

+0

Запрос базы данных Firebase может использовать только один вызов 'orderBy'. Вы можете комбинировать значения в одном свойстве для достижения вашего прецедента. См. Http://stackoverflow.com/questions/26700924/query-based-on-multiple-where-clauses-in-firebase. –

ответ

1

Посмотрите на это видео (это в JavaScript, но это точно решает вашу проблему): https://youtu.be/sKFLI5FOOHs?t=612

В принципе, вы должны структурировать ваши данные для ваших запросов. В примере OP Вопрос будет иметь поле, например category_level: "cat_1". Затем вы можете выполнить запрос equalTo("cat_1"). Вы можете оставить поля category и level, если вам это нужно для других запросов (но вам придется обрабатывать дублирование в этом случае).

Если вы знаете, что количество ваших изделий невелико, самым простым решением является просто потянуть все category=cat и фильтровать level=1 элементов.

+0

Thnx i проверит видео –

+0

nope я не могу отфильтровать bcz в категории более 2000 перекодировки, поэтому не может фильтровать уровень = 1 –

+0

Пока видео может адресовать вопрос OPs, ваш ответ также должен включать минимальный ответ. –

Смежные вопросы