ios - 通过 Swift 中一个键的多个值过滤 Firebase 结果

标签 ios objective-c xcode swift firebase

我正在使用 Firebase 和 Swift 构建社交网络应用程序。我有一些用户对其他用户有一些关注。我想为这个用户解析一个提要,其中只包含他的关注者列表中的帖子。我的数据库如下所示:

    "posts": {
       "postA": {
          "title": "Title for post A"
          "byUser": "userABC"
          }
       }
       "postB": {
          "title": "Title for post B"
          "byUser": "userCBA"
          }
       }
       "postC": {
          "title": "Title for post C"
          "byUser": "userBCA"
          }
       }
       "postD": {
          "title": "Title for post D"
          "byUser": "userBCD"
          }
       }
   }
   "users": {
      "userABC": {
         "name": "John"
         "following": {
            "userCBA": "true"
            "userBCA": "true"
         }
      }
      "userCBA": {...}
      "userBCA": {...}
      "userBCD": {...}
   }

所以我们的想法是显示过滤后的帖子 userABC对于他的以下列表( postBpostC )。我应该提出什么 Firebase 请求?

P.S.:我唯一的想法是为每个用户发出几个 firebase 请求以下载他们的帖子,然后将这些请求附加到一个数组中,然后按时间戳对数组对象进行排序。但想象一下,成千上万的追随者,每个人都有一千个帖子。这将是一场灾难。

P.P.S.:我无法通过 Firebase“安全与规则”来调整结果,因为我想在搜索中显示所有用户的所有帖子。

非常感谢!

最佳答案

在 NoSQL 中,您通常会按照应用程序使用数据的方式对数据进行建模。由于您想向用户显示他们关注的人的帖子的提要/墙,请在您的数据库中对其进行建模:

"user_walls": {
  "userABC": {
     "KeyOfPost1FromUserCDA": true
     "KeyOfPost2FromUserBCA": true
     "KeyOfPost3FromUserCDA": true
  },
  "userBCA": {
     "KeyOfPost1FromUserCDA": true
     "KeyOfPost3FromUserCDA": true
     "KeyOfPost4FromUserABC": true
  },
  etc
}

这里我们只存储帖子的键,但您还可以存储更多信息,而不仅仅是 true。这是一个称为反规范化的过程。

对于这个和更多相关的建议,我推荐这个 article on NoSQL Data Modeling .

有关以这种方式对其数据建模的出色示例应用程序,请参阅 FireFeed:https://firefeed.io/ .

关于ios - 通过 Swift 中一个键的多个值过滤 Firebase 结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35418755/

相关文章:

ios - 无法使用类型为 '*' 的参数列表调用 '(NSURL, *: NSString?)'

objective-c - Xcode 在调试器中暂停时具有错误的调试值

ios - 实现 iRate 时出现问题

UITableViewCell 中的 iOS 容器 View

objective-c - Box2d - 非 POD 元素类型的可变长度数组 'b2Vec2'

objective-c - 使用指针作为 NSMutableDictionary 的键的安全方法是什么?

ios - 从 TableView 中检索索引路径

ios - 在 XCode 4 中构建和运行 App 时出现警告对话框 "The Service is Invalid"

ios - 核心数据不持久保存对象

ios - 如何使 Objective-C 泛型与 Swift 一起工作