【问题标题】:How to update user's feed in Firebase Database when the user follows someone当用户关注某人时如何在 Firebase 数据库中更新用户的提要
【发布时间】:2016-09-15 01:18:22
【问题描述】:

我正在设计一个应用程序,每个用户都将拥有一个基于他/她关注者的帖子的时间线(又名提要)。在我的数据库中,我将用户时间线帖子保留为共享密钥。所以feedsubtree 中的每个 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 数据库中用户提要的一般概念。

编辑:

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

用户提要按时间排序。所以我们需要在添加和删除对帖子的引用时保持这个顺序。

谢谢。

【问题讨论】:

  • 指定您的编码语言。
  • 我不明白这个问题,当然解决方案是检索较旧的帖子并将它们推送到用户时间轴,无论是上下文还是使用工作人员

标签: firebase firebase-realtime-database


【解决方案1】:

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

但如果我们假设每个用户也有一个他们自己的帖子列表,它可能类似于(在 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);
  });
}

【讨论】:

  • 感谢您的快速回复,如果我们想将较早的帖子添加到用户的提要中,您的代码非常好。但问题是用户的提要实际上是按发布时间排序的。在向提要添加新帖子时,我们需要保持顺序。当然,我们也可以在代码中做到这一点,但是将这些帖子合并到用户提要中同时保持它们的时间顺序不是非常庞大的操作吗?这是用户提要的最佳做法吗?
  • 最佳实践是最适合您应用的所有用例的最佳实践。由于我们不知道这些(您可能也不知道),因此现在关注它们是过早优化的情况。在 NoSQL 数据库中,在多个位置写入数据是很常见的。您实际上是在使写入变得更昂贵/更困难,从而使读取变得更便宜/更简单。我强烈推荐在NoSQL data modeling阅读这篇文章。
猜你喜欢
  • 2019-06-21
  • 1970-01-01
  • 2020-01-27
  • 2017-08-22
  • 1970-01-01
  • 2017-04-30
  • 1970-01-01
  • 2019-05-16
  • 1970-01-01
相关资源
最近更新 更多