Запрос Firebase равен арраисту [дубликат]

6
задан kevinius 10 April 2015 в 11:18
поделиться

1 ответ

Запросы Firebase не имеют оператора OR или IN. Таким образом, вы не можете легко сопоставить вышеуказанный запрос с Firebase.

Одним из способов решения этой задачи было бы реализовать функцию, которая просто циклически перебирает элементы:

function loadThese(ids, callback) {
  var rows = [];
  while (ids.length > 0) {
    var id = ids.splice(0,1)[0];
    refToTable.child(id).once('value', function(snapshot) {
      rows.push(snapshot.val());
    });
  }
  callback(rows);
}

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

Другой (и, вероятно, лучший способ) решить эту проблему - выяснить, почему эти три строки выбраны и почему не другие. У этих строк, вероятно, есть что-то общее. Как только вы узнаете о том, что у у них есть общее, вы можете моделировать это в структуре данных.

Update (20160408): для хорошего объяснения, почему приведенное выше намного быстрее Firebase, как вы могли бы ожидать, см. этот ответ .

9
ответ дан Community 25 August 2018 в 08:18
поделиться