2015-05-29 46 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