2016-04-27 143 views
1

我想要使用Firebase選擇已啓動但尚未結束的日曆活動,或者未來6個月內啓動的日曆活動。Firebase AND查詢

在僞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

密切相關:[查詢基於多個其中火力子句](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)'會將其過濾掉。這不是我想要的。 –