当前位置:  开发笔记 > 编程语言 > 正文

使用Firebase对多个值进行过滤和排序

如何解决《使用Firebase对多个值进行过滤和排序》经验,为你挑选了1个好方法。

我正在使用Firebase构建社交应用.我在Firebase中存储帖子,如下所示:

posts: {
   "postid": {
      author: "userid" 
      text: "",
      date: "timestamp"
      category: "categoryid"
      likes: 23
   }
}

每个帖子属于一个类别,可以喜欢帖子.

现在,我正在尝试显示属于特定类别的帖子,按喜欢的数量排序.我可能还希望按日期限制过滤器,以仅显示类别中最近,最喜欢的帖子.我怎样才能做到这一点?

Firebase查询功能似乎不支持这样的多个查询,这看起来很奇怪......



1> David East..:

您只能对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)
}

上面的代码为特定类别的帖子创建了引用,并按日期排序.数据结构可以进行多次查询.回调闭包将触发指定类别下的每个单独项目.

如果要进一步查询,则必须对数据进行客户端过滤.

推荐阅读
360691894_8a5c48
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有