【问题标题】:Getting list of all posts with user like and total likes for each post in firestore获取firestore中每个帖子的用户喜欢和总喜欢的所有帖子列表
【发布时间】:2018-07-27 00:13:42
【问题描述】:

此问题与查询 firestore 和实现点赞系统的最佳方法以及计算 firestore 中每个帖子的点赞数有关。

假设我们有称为帖子、喜欢、cmets、主题标签的集合。有这样的json结构。

posts:[{                   likes [{                      
  postId:id                postId:,                       
  createdAt:date           userId,                       
  title:string,            collectionType:'posts', 
  description,string       likedAt:date
  updatedAt,date          }]    
  createdUser:userId
  updatedUser:userId,    
}]

comments:[{              hashtags [{}]
  postId,
  userComments:[{
    userId:,
    comment:'',
    commentedAt:''      
    replies:[{}]
 }]
  1. 使用用户 cmets 实现类似系统的最佳方法是什么 以及对每个改进的评论的嵌套回复 当我们拥有数百万用户和帖子时的效率和性能。

  2. 查询所有帖子点赞数和点赞数是否登录用户 喜欢每个帖子以及 cmets 和 cmets 计数,每个帖子都获取回复 如果可以,请发表评论。

  3. 我的方法适用于 firestore 吗?或任何最好的数据建模 也可以设计。

  4. 我们是否需要将主题标签存储在同一集合中的单独集合中 即在创建帖子时,在带有主题标签数组的帖子对象内。

我是firestore的新手,我想学习在firestore中查询数据。 根据我对 mongodb 的了解,我想在 firestore 中进行探索。请在我的问题案例中帮助我。非常感谢任何建议或指导。

谢谢

【问题讨论】:

    标签: database database-design google-cloud-firestore


    【解决方案1】:
    1. 我建议您创建一个名为 commentsposts 子集合,并将每个帖子的 cmets 放在帖子文档中。您可以对 cme​​ts 的 cmets 执行相同的操作。您可以创建comments 子集合的子集合,也称为comments。当可以在所有子集合中查询 cmets 时,您将能够轻松地在单个查询中获取所有这些数据。

    2. 在您的likes 集合文档中,我将更改userId 字段并将其替换为createdUserIdlikedUserId。然后您可以查询特定用户的帖子的所有喜欢或用户的所有喜欢。

    3. 这完全适合 Cloud Firestore

    4. 您应该有一个主题标签的集合。您还需要将帖子中使用的主题标签存储在 map of values 中,以允许查询。

    【讨论】:

    • 哇,这消除了心中的一些困惑和疑虑。通过特定的likedUserId查询帖子时的一件事,我们如何获取用户喜欢的所有帖子?我们是否需要通过匹配 postId 将帖子复制到喜欢或从帖子集合中获取?
    • 您可以将帖子复制到likes 收藏。但是,每当更新原始帖子时,您都需要运行云函数来更新副本。获取喜欢列表,然后从posts 集合中获取帖子(一个接一个)将非常慢。如果您的帖子有标题,您可以复制标题,然后允许用户通过选择它来阅读他们喜欢的任何帖子。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-23
    • 1970-01-01
    • 2017-10-07
    • 2020-11-23
    • 1970-01-01
    相关资源
    最近更新 更多