Поиск по нескольким параметрам в Firebase

Поиск по нескольким параметрам невозможен в  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)Создать свой индекс програмно

Кастомный индекс Firebase