我正在使用Firebase构建社交应用.我在Firebase中存储帖子,如下所示:
posts: { "postid": { author: "userid" text: "", date: "timestamp" category: "categoryid" likes: 23 } }
每个帖子属于一个类别,可以喜欢帖子.
现在,我正在尝试显示属于特定类别的帖子,按喜欢的数量排序.我可能还希望按日期限制过滤器,以仅显示类别中最近,最喜欢的帖子.我怎样才能做到这一点?
Firebase查询功能似乎不支持这样的多个查询,这看起来很奇怪......
您只能对Firebase数据库查询使用一个排序功能,但正确的数据结构将允许您通过多个字段进行查询.
在您的情况下,您想按类别订购.它不是将类别作为属性,而是在以下情况下充当索引posts
:
posts: { "categoryid": { "postid": { author: "userid" text: "", date: "timestamp", category: "categoryid", likes: 23 } } }
现在,您可以编写查询以获取特定类别下的所有帖子.
let postsRef = Firebase(url: "/posts") let categoryId = "my-category" let categoryRef = postsRef.childByAppendingPath(categoryId) let query = categoryRef.queryOrderedByChild("date") query.observeEventType(.ChildAdded) { (snap: FDataSnapshot!) { print(snap.value) }
上面的代码为特定类别的帖子创建了引用,并按日期排序.数据结构可以进行多次查询.回调闭包将触发指定类别下的每个单独项目.
如果要进一步查询,则必须对数据进行客户端过滤.