Поиск по нескольким параметрам невозможен в Firebase, при попытке вызова метода orderBy() несколько раз произойдет ошыбка.
Но существует три варианта, которые помогут решить проблему:
1) Фильтровать большинство записей на сервере, меншую часть на клиенте.
Например можно выполнить сортировку и выборку с помощью orderBy().startAt()./endAt() на сервере, полученый результат обработать с помощью средств JavaScript, или другого языка.
ref.orderBy('category') .equalTo('java') .once('value', function (snapshot) { var posts = snapshot.val() posts = posts.filter(e=>{e.likes_count>5}) return posts })
2)Добавить свойство которое содержит, два или больше значений по которым нужно фильтровать
Дублирование даных уместно в NoSQL хранилищах данных.
{ userUId:{ "name":"John Sculley", "sallary": 300, "balance":200, "salary_balance":'200-300' } }
Запрос по несколким параметров будет выглядеть так
getRef .orderBy('salary_balance') .startAt('200-300') .endAt('200-800') .on('child_added', function(snapshot) { var employee= snapshot.val(); console.log(employee); });
Такое сочетание значений в свойстве может работать с более чем двумя значениями, но можно сделать фильтр диапазона только по последнему значению в составном свойстве.
3)Создать свой индекс програмно