首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Firebase可扩展性:整个数据集上的观察者与多个观察者

Firebase可扩展性:整个数据集上的观察者与多个观察者
EN

Stack Overflow用户
提问于 2016-05-17 15:03:56
回答 1查看 423关注 0票数 1

我正在创建一个Firebase Swift应用程序,用户可以在提要中查看其他用户发布的消息。有些消息与某些用户相关。消息可以被评论,也可以被支持和反对。

这是一种更具扩展性的设计:

1)一个观察者,检查所有消息的.Value并重新填充提要。

2)每个用户拥有的消息一个观察者,并删除和添加观察者作为提要更新。

1)听起来可伸缩性较差,但我担心2)有很多观察者,以及添加和删除观察者的延迟。

哪种设计更好?

EN

回答 1

Stack Overflow用户

发布于 2016-05-18 01:21:46

我建议使用一种非常简单的方法。向包含有问题的用户的消息添加观察者

例如,这里有一个存储帖子的post(Message)节点。

代码语言:javascript
复制
{
  "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引用的帖子的代码

代码语言:javascript
复制
    let postsRef = myRootRef.childByAppendingPath("posts")
        postsRef.queryOrderedByChild("user").queryEqualToValue("uid_2")
           .observeEventType(.ChildAdded, withBlock: { snapshot in

        print(snapshot)

    })

运行此代码后,在posts节点中发布的任何具有user = uid_2的帖子都将通知该用户。

您可以通过为多个用户更改post_x节点来扩展这一点

代码语言:javascript
复制
  "post_0" : {
      "msg" : "some message",
      "users_watching_this_post"
         "uid_0": true
         "uid_2": true
    },

和深度查询

代码语言:javascript
复制
postsRef.queryOrderedByChild("users_watching_this_post/uid_2").queryEqualToValue(true)
        .observeEventType(.ChildAdded, withBlock: { snapshot in
    print(snapshot)
})
票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37269288

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档