2015-05-29 59 views
4

我試圖讓職位搜索列表保存在火力點,所以我有我這樣的火力過濾器和分頁

{ 
"post": { 
    "postId": { 
     "title": "bla bla bla", 
     "date": "1/1/2015" 
    }, 
    "postId2": { 
     "title": "bla bla bla", 
     "date": "2/1/2015" 
    } 
}} 

現在我想按標題過濾firebse分貝,只發布他們的標題開始與「喇嘛喇嘛」,然後做尋呼和按日期排序所以我做了這個代碼:

var posts=new Firebase(URL + "/post"); 
posts=posts.orderByChild("title").startAt("bla bla").endAt("bla bla"+"z");//this will only show posts that starts with bla bla 
posts=posts.orderByChild("date").startAt(10).limitToFirst(10);//this will filter and show only the second page 
posts.on("value", function (raw_data) { 
     //showing the results and more 
}); 

每個查詢的作品,但是當我把它們放在一起我得到一個錯誤

Query.orderByChild:不能組合多個orderBy調用。

我該怎麼辦? 我不喜歡使用我自己的服務器,並將數據複製到我的服務器,並在那裏執行

+1

最好。題。永遠。 –

+1

.endAt('bla bla〜')會更好,因爲您目前的搜索會排除諸如'bla blaze'之類的很多匹配項)。現在,也許更重要的是,爲什麼?這聽起來像你試圖實施基本的搜索。如果是這樣,我會鼓勵[一個真正的搜索工具](https://www.firebase.com/blog/2014-01-02-queries-part-two.html)。有更多人搜索谷歌的原因,而不是任何網站內置的搜索工具。 – Kato

+0

謝謝,我將使用〜技巧,但「真正的搜索工具」是ElasticSearch,需要在我自己的服務器上運行它,我的服務器無法擴展太多 –

回答

0

有幾種方法可以做到這一點,但這裏有一種方法。

在帖子查詢的結果中放置日期查詢。概念上:

var posts=new Firebase(URL + "/post"); 
posts=posts.orderByChild("title").startAt("bla bla").endAt("bla bla"+"z"); 
posts.on("value", function (raw_data) { 
    //now craft a date query using the results from the posts query 
    // or, it could be filtered in code 
}); 
+0

如果我這樣做,第二個過濾器將運行在客戶端大小,不是嗎?所以它會失敗,帖子太多 –

+0

最初的問題是你想按標題查詢,然後按頁面排序並按日期排序。標題通常不是很多數據,因此它實際上取決於數據集的大小和/或每個數據集中的數據。 – Jay