ios - 如何只显示好友的帖子? swift/火力基地

标签 ios swift firebase firebase-realtime-database

我刚刚实现了一个好友添加系统,但我正在为如何只允许用户看到好友的帖子而绞尽脑汁。

在我显示帖子的主屏幕上,我有:

DataService.ds.REF_USERS.child(currentUser!).child("friends").observeSingleEventOfType(.Value) { (snapshot: FIRDataSnapshot) in

            for snapshots in snapshot.children.allObjects {
                let snap = snapshots as! FIRDataSnapshot
                var frand = String(snap.key)   
                self.friendsArray.append(frand)
            }

这会拉回他们所有 friend 的 UID。

然后我想搜索所有具有该 UID 的帖子。

我想也许我可以使用 equalTo 查询对 friendsArray 进行 for 循环...?但是我不确定如何使用我当前存在的查询来实现它,该查询显示了我想看到的回帖:

DataService.ds.REF_POSTS.queryOrderedByChild("timestamp").queryStartingAtValue(cutoff).observeEventType(.ChildAdded, withBlock: { (snapshot:FIRDataSnapshot) in

-设置我的帖子并将其附加到数组的代码-

        self.collectionView.reloadData()

    })

我的一些数据结构是:

users
     3093098409384
        friends
            29834098209 : true

posts
     099390234
         userWhoPosted: 29834098209

所以我将 friend 从用户中拉出来 -> friend -> UID 位,但是我如何取回那些用户发布的帖子,然后执行我正在做的正常查询?

感谢任何指导。

最佳答案

看看这篇文章: https://firebase.googleblog.com/2015/10/client-side-fan-out-for-data-consistency_73.html?m=1

基本上您需要“扇出”您的数据,这意味着将“发布”对象数据复制到多个位置以使其更易于访问。 即:创建一个“时间线”模式,并在每个用户的 uid 和该用户的关注者的帖子下。

Timeline: {
<user_uid>: {
<post_id>: {
// your post data
}
}
}

您可以通过每次用户提交新帖子时将该帖子发送到他的每个关注者的时间轴来实现。

这听起来可能很奇怪,但 Firebase 有一个概念,您应该多次复制数据以使其更易于访问。

关于ios - 如何只显示好友的帖子? swift/火力基地,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38407625/

相关文章:

ios - 是否可以在两个平台之间共享相同的 Realm 数据库文件?

ios - 开发一个 iOS 应用程序,关于我应该使用的 API 的问题。 (想到 SpriteKit)

ios - 如何处理 : App Store Connect Operation Error (ERROR ITMS-90744: "Unsupported Xcode or SDK Version. )

ios - 一个单元格中的 UIViewController 使用 Swift 同时显示两个单元格

Swift 如何在星级评定中显示评级值

ios - 宽高比填充和宽高比快速适配

firebase - 如何在 Firebase 函数中将 Firebase Firestore 时间戳转换为 Zulu 日期时间格式

node.js - 将 Firestore 依赖项和类型导入到 node.js

javascript - Angular firebase 不显示 key

ios - Swift 中的 "' CGFloat ' is not convertible to ' Double '"错误(iOS)