获取firestore中每个帖子的用户喜欢和总喜欢的所有帖子列表

Posted

技术标签:

【中文标题】获取firestore中每个帖子的用户喜欢和总喜欢的所有帖子列表【英文标题】:Getting list of all posts with user like and total likes for each post in 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:[]
 ]

    使用用户 cmets 实现类似系统的最佳方法是什么 以及对每个改进的评论的嵌套回复 当我们拥有数百万用户和帖子时的效率和性能。

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

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

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

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

谢谢

【问题讨论】:

【参考方案1】:

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

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

    这完全适合 Cloud Firestore

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

【讨论】:

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

以上是关于获取firestore中每个帖子的用户喜欢和总喜欢的所有帖子列表的主要内容,如果未能解决你的问题,请参考以下文章

如何保存用户“喜欢”帖子的状态?

通过浏览他/她的所有帖子 MongoDB 获取该用户收到的总喜欢数

如何在阅读用户的帖子时获取照片网址,他们喜欢照片?

Firebase 获取数据

MongoDB中喜欢的EnsureIndex

使用 Cloud Firestore 的用户特定收藏夹