gpt4 book ai didi

firebase - 适用于社交媒体的 Cloud Firestore 数据库结构

转载 作者:行者123 更新时间:2023-12-04 16:06:14 26 4
gpt4 key购买 nike

我正在尝试为一个简单的社交媒体概念创建一个简单的 Cloud Firestore 数据库结构。

每个用户最多可以拥有一个可以随时更新的帖子(“最喜欢”的帖子除外)。用户对其帖子的“最喜欢”版本将保存为单独的帖子,只要用户对其当前版本的帖子收到的赞比最喜欢的版本多,该帖子就会随时更新。

我想出了一个结构,但我对 NoSQL 数据库还很缺乏经验。这个结构看起来会支持我的系统吗?还有这些会阻止重要查询的明显问题吗?

USERS (collection)
DocumentID - userId gathered from Authentication uid
firstName: String
lastName: String
username: String
birthdate: Timestamp
accountCreationDate: Timestamp
post: postId (when user is created, create a default post document for them since there is only one post per user)
bestPost: postId
FRIENDS (subcollection)
DocumentID - userId of the friend
username: String

POSTS (collection)
DocumentID - postId randomly generated
authorUserId: String
authorUsername: String
text: String
imagePath: String
location: String
likesCount: Number
LIKES (subcollection)
DocumentID - userID of the liker
username: String

friends 子集合存储了 friend 的用户名,因此通过用户名创建该用户的 friend 列表很容易。我假设我可以通过将 friend 的 documentID 与用户中的 documentID 进行匹配来获得该用户 friend 的更多信息。

对于like子集也是如此

最佳答案

结构看起来不错。对于在 Cloud Firestore 中执行此操作,我会提供一些意见。

更新 likedCount

如果帖子的点赞频率可能不高(每秒少于一个),您可以创建一个 Cloud Function(由 likes 子集合 .onCreate 触发) ) 使用事务更新 likesCount。确保用户不能在您的规则内编辑 likesCount

允许用户编辑最喜欢的帖子

您需要制定规则来执行此操作。这可能会稍微复杂一些,并且可能需要一些战略性思考(除非您已经有了解决方案)。

关于firebase - 适用于社交媒体的 Cloud Firestore 数据库结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48712494/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com