2016-04-27 5 views
1

Я хочу использовать Firebase для выбора событий календаря, которые либо уже начались, но не закончились, или которые начинаются в течение следующих 6 месяцев.Firebase AND query

В псевдо-SQL, что я хотел это:

WHERE `start` < {6 months from now} AND `end` > {now} 

Проблема заключается в том, я знаю, как получить один из этих случаев использования, но не оба:

firebase.orderByChild('start').endAt(+new Date() + 15724800000) 
firebase.orderByChild('end').startAt(+new Date()) 

Если Я пытаюсь объединить два, я получаю следующее сообщение об ошибке:

Uncaught Error: Query.orderByChild: You can't combine multiple orderBy calls.

Я не желающему выполнять два запроса, чтобы отфильтровать список вниз. Вероятно, будет только несколько результатов, которые соответствуют запросу, которое я хочу, но могут быть миллионы результатов, которые соответствуют одному из запросов сами по себе.

+0

тесно связано: [Query основан на нескольких, где положения в firebase] (http://stackoverflow.com/questions/26700924/query-based-on-multiple-where-clauses-in -firebase). Вы уже посмотрели, можете ли вы объединить свойства 'start' и' end', как описано там? –

+0

@FrankvanPuffelen проблема в том, что события, которые я пытаюсь вытащить, возможно, уже начались, поэтому я не могу использовать '.startAt (start)', потому что это игнорирует все, что уже началось. Я не хочу делать это с двумя запросами, потому что оба этих запроса могут возвращать большое количество данных. Возвращение всего, что начинается в следующие 6 месяцев (или уже началось), потребует вытягивания каждого события, дата начала которого уже прошла. –

ответ

0

https://www.firebase.com/blog/2013-10-01-queries-part-one.html#between

firebase.orderByChild('start') 
.startAt(startTime) 
.endAt(endTime) 
.once('value', function(snap) { 
    console.log('messages in range', snap.val()); 
}); 
+0

Я не ищу сообщения в определенном диапазоне. Если событие уже запущено, но не закончилось, вызов '.startAt (startTime)' будет отфильтровывать его. Это не то, что я хочу. –

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