我会建议一个超级简单的方法。将观察者添加到包含相关用户的消息中
例如,这里有一个存储帖子的帖子(消息)节点。
{
"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)
})
运行此代码后,发布在帖子节点中且用户 = 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)
})