如何在用户关注某人时更新Firebase数据库中的用户Feed

时间:2016-09-14 14:41:43

标签: firebase firebase-realtime-database

我正在设计一个应用程序,每个用户将根据他/她的帖子有一个时间轴(也就是feed)。在我的数据库中,我将用户时间轴帖子保留为共享密钥。因此,feed子树中的每个ID都属于用户关注的某个帖子。

"users": {
  "userId-1": { 
    "userName": "Namey McNameface",

    "following": {
      "followingId-1": true,
      "followingId-2": true,
      .
      .
    },
    "followers": {
      "followerId-1": true,
      "followerId-2": true,
      .
      .
    },
    "feed": {
      "postId-1": true,
      "postId-2": true,
      .
      .
    }
  },
  "userId-2": {},
  "userId-3": {},
  .
  .
}

当有人发帖时,我也会将该帖子的关键字添加到该用户的feed粉丝中。

问题在于,当有人开始关注其他人时,他们没有开始看到他们的旧帖子。您是否知道如何在跟踪某人后立即更新用户时间表?

注意: 这不是基于代码的问题,它实际上是一个设计问题。我只想了解Firebase数据库中用户Feed的一般概念。

修改

我正在为我的服务器使用Java和Spring Framework。

用户Feed是按时间排序的。因此,我们需要在添加和删除对帖子的引用时保留此顺序。

谢谢。

1 个答案:

答案 0 :(得分:2)

如果您想在开始关注用户时显示用户的历史帖子,那么您需要在那时阅读这些帖子。由于您的问题不包含有关如何存储帖子的信息,因此不幸的是,我可以做出具体的答案。

但是,如果我们假设每个用户也有自己的帖子列表,它可能类似于(在JavaScript中):

function follow(uid) {
  var postsRef = ref.child('users').child(uid).child('posts');
  var feedRef = ref.child('users').child(auth.uid).child('feed');
  postsRef.on('child_added', function(snapshot) {
    feedRef.child(snapshot.key).set(true);
  });
}