【问题标题】:Firestore feed/timeline modelingFirestore 提要/时间线建模
【发布时间】:2018-11-26 04:56:32
【问题描述】:

我正在尝试制作用户可以关注的提要/时间线 - 类别、专辑或其他用户。每次将图片添加到类别、相册、用户时,它都应该出现在时间轴上。我正在尝试对我的数据库进行建模,因此它只需要 1-2 个获取请求。

  • 解决方案的一个想法是扇出结构,但是如何在 Firestore 中进行多路径更新?当有人上传照片时,我如何更新所有关注者的时间线?
  • 当我无法查询子集合时,如何构建数据库?我是否应该只制作一个包含所有用户时间轴帖子的集合作为单独的文档,这将是荒谬的重复数据量。
  • 除了扇出之外,还有其他方法来构建用户时间线吗?

【问题讨论】:

    标签: firebase google-cloud-firestore


    【解决方案1】:

    但是如何在 Firestore 中进行多路径更新?

    相当于 Firebase 实时数据库的多路径更新,在 Cloud Firestore 中称为批量写入。你可以在documentation on batches writes阅读更多内容。

    【讨论】:

    • 批量写入有 500 个文档限制。因此,如果一张专辑有 100 万关注者,我需要进行 2k 批量写入,并且每批写入仍然与 500 次写入的价格相同。因此,对于每张新照片,我仍会为 100 万次写入付费。
    • 是的,您的两个陈述都是正确的。但是批量写入仍然是进行这些更新的方式。
    【解决方案2】:

    平。

    root
      pictures
        uid-abc123
          url:"http://test.com/img1.jpg"
          owner:useriduid,
          created: 1529333679449
        uid-abc1billion
          url:"http://test.com/img1billion.jpg"
          owner:useriduid,
          created: 1529333679300
    

    查询和安全规则就这么简单了。你可以添加indexing,它的扩展性很强。

    重新多路径写入,使用batched writes

    【讨论】:

    • 感谢您的回答,但该代码与我的问题无关。问题在于构建时间线,因此我可以提出很少的请求来为某个用户获取它。所以我需要获取用户喜欢的类别、专辑,然后将图片添加到过去 24 小时内的图片中,然后当用户在第 2 页滚动时,获取 24 到 48 小时内的图片,依此类推。
    • 您的图片应该有一个created:unix-timestamp 属性,您可以在该属性上进行.where("created", "<", unix-timestamp) 查询。 ...我在答案中添加了 created 属性以帮助将其可视化。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-05-30
    • 1970-01-01
    • 1970-01-01
    • 2021-01-19
    • 2019-08-21
    • 2020-06-15
    • 1970-01-01
    相关资源
    最近更新 更多