我正在创建一个Firebase Swift应用程序,用户可以在提要中查看其他用户发布的消息。有些消息与某些用户相关。消息可以被评论,也可以被支持和反对。
这是一种更具扩展性的设计:
1)一个观察者,检查所有消息的.Value并重新填充提要。
2)每个用户拥有的消息一个观察者,并删除和添加观察者作为提要更新。
1)听起来可伸缩性较差,但我担心2)有很多观察者,以及添加和删除观察者的延迟。
哪种设计更好?
发布于 2016-05-18 01:21:46
我建议使用一种非常简单的方法。向包含有问题的用户的消息添加观察者
例如,这里有一个存储帖子的post(Message)节点。
{
"posts" : {
"post_0" : {
"msg" : "some message",
"user" : "uid_0"
},
"post_1" : {
"msg" : "another message",
"user" : "uid_1"
},
"post_2" : {
"msg" : "yippee message",
"user" : "uid_2"
}
}
}下面是观察任何包含uid_2引用的帖子的代码
let postsRef = myRootRef.childByAppendingPath("posts")
postsRef.queryOrderedByChild("user").queryEqualToValue("uid_2")
.observeEventType(.ChildAdded, withBlock: { snapshot in
print(snapshot)
})运行此代码后,在posts节点中发布的任何具有user = uid_2的帖子都将通知该用户。
您可以通过为多个用户更改post_x节点来扩展这一点
"post_0" : {
"msg" : "some message",
"users_watching_this_post"
"uid_0": true
"uid_2": true
},和深度查询
postsRef.queryOrderedByChild("users_watching_this_post/uid_2").queryEqualToValue(true)
.observeEventType(.ChildAdded, withBlock: { snapshot in
print(snapshot)
})https://stackoverflow.com/questions/37269288
复制相似问题