当前位置: 首页 > 知识库问答 >
问题:

社交媒体应用中用户交互的Firestore结构

唐啸
2023-03-14
/ (root)
|
--> /interactions (collection)
|    |--> /userId (document)
|         |--> pendingPostsInteractionsCount (number) <-------- Always increase. Reset to 0 when the user open the "notifications" screen.
|         |--> pendingChatsCount (number) <-------- Always increase. Decrease when the user open an unread chat.
|         |--> /posts (collection)
|         |     |--> /postId (document)
|         |           |--> /likes (collection)
|         |           |     |--> otherUserId (document)
|         |           |          |--> { date: Date }
|         |           |     ...
|         |           |
|         |           |--> /comments (collection)
|         |                 |--> otherUserId (document)
|         |                      |--> { comment: String, date: Date }
|         |                 ...
|         |              
|         |--> /chats // There are no "groups" in my app
|               |--> otherUserId (document)
|                     |--> messages (collection)
|                          |--> messageId (document)
|                                |--> { text: String, date: Date }
|                          ...
|
|--> /posts (collection)
|    |--> /userId (document)
|          |--> /userPosts (collection)
|               |--> postId (document)
|                     |--> { ...postData }
|               ...
|          ...
|           
|--> /users (collection)
      |--> userId (document)
            |--> { ...userData }
      ...

当用户导航到Likes或Comments屏幕时,他/她将分别看到用户指定帖子的Likes或Comments列表。

用这种结构能正确处理这两种情况吗?或者将评论和喜欢集合放在/posts/{userId}/userposts/{postId}/(也可以作为子集合)中会更好

Firestore可以同时执行“多个集合查询”吗?以便在我的“交互”屏幕中,我可以从按日期排序的不同集合中获取所需的数据

我很感激有Firestore和NoSQL数据库一般经验的人的一些反馈或建议。

谢谢你。

共有1个答案

艾学海
2023-03-14

将此作为一个社区维基发布,因为这是@DougStevenson评论的,它回答了这个问题:

如果你可以通过查询来满足你的应用程序的需求,那么是的,这就足够好了。这才是真正重要的。如果它不能满足查询,那么您将需要后退一步,仔细定义查询,然后构造数据以满足它们。

NoSQL数据建模通常遵循您需要的查询,所以首先定义这些查询。

 类似资料:
  • 我有一个集合,我的应用程序在其中存储用户的所有帖子,数据结构如下: 现在,我想向我的用户显示这个集合的所有帖子;但是,只有当用户跟随创建帖子的人时,即帖子文档的字段适合。 我知道如果用户只关注一个人,查询集合是很简单的,也就是说,我有一个简单的子句。但是:如果我的用户关注10,000人或更多人呢?我怎么查询呢? 另外,我应该如何存储,即用户跟随的人?使用简单的数组似乎不适合我,但是使用所有其他选项

  • 因此,我想创建一种社交媒体应用程序,并使用fiRest作为主数据库。 目标是创建“facebook”新闻源。 每个用户都有一个朋友列表,每个用户都可以创建帖子。 每个帖子都可以被修改为对应用程序的所有用户或用户朋友可见。所以每个用户都可以向他所有的朋友发布帖子,并向应用程序中的每个人发布帖子。 此外,用户还可以在新闻提要中“保存”他们喜欢的帖子。(类似帖子子集合) 现在在用户的新闻提要中-我如何查

  • 我们正在使用Firebase构建一个社交媒体网络应用程序,并使用firest来存储用户和他们的帖子。 当用户喜欢某个帖子时,我们会将其保存在中,并在帖子文档中更新。 假设我们的应用每天有100万用户,他们都非常喜欢病毒性帖子。 现在,firebase表示一个文档每秒不能处理超过一次写入。然而,我们已经看到,我们可以每秒更新文档几次,但他们仍然不建议这样做。 我的问题是,在firestore中存储所

  • 我正在尝试为一个简单的社交媒体概念创建一个简单的云Firestore数据库结构。 每个用户最多可以有一个可以随时更新的帖子(一个“最喜欢的”帖子除外)。用户“最喜欢的”版本的帖子被保存为一个单独的帖子,当用户在其当前版本的帖子上收到比最喜欢的版本更多的赞时,该帖子可以被更新。 friends子集合存储好友用户名,因此很容易按用户名创建该用户的好友列表。我假设我可以通过将朋友的documentID与

  • 我有一个数据结构,由一个名为“民意测验”的集合组成“民意测验”有几个随机生成身份证的文档。在这些文档中,还有一个名为“答案”的额外集合用户对这些民意测验进行投票,投票都写入“答案”子集合。我在“答案”节点上使用. runTransaction()方法,目的是这个子集合(对于任何给定的投票)不断被用户更新和写入。 我一直在阅读关于火力恢复的社交媒体结构。然而,我最近遇到了火力恢复的一个新功能,“ar

  • 考虑instagram提要场景。我想让我关注的人“发布”所有帖子。对于每一个帖子,我都想知道我是否喜欢它,还想知道我关注的其他人中有谁喜欢它(如果有的话)。在gremlin中实现这一点的最佳解决方案是什么(可能避免重复)? 图像清晰 下面只给出了用户2“发布”的帖子。如何在同一查询中获取其他信息?