关于在 Firebase Realtime 后端创建具有 Posts 节点的社交应用程序的提示/建议 [关闭]

Posted

技术标签:

【中文标题】关于在 Firebase Realtime 后端创建具有 Posts 节点的社交应用程序的提示/建议 [关闭]【英文标题】:Tips/suggestions on creating a social app that has a Posts node on Firebase Realtime backend [closed] 【发布时间】:2020-12-18 20:22:32 【问题描述】:

我只是想看看是否有人可以就他们如何实施社交应用程序提供建议或提示,用户可以在该应用程序上“发布”并且用户可以看到所有帖子,就像“Nextdoor”应用程序一样。

我的 Firebase 实时数据库目前有以下设置:

posts
----- <UID>
----------- <POSTID>
------------------- created
------------------- image
------------------- posttext
------------------- likes
------------------- <poster>
---------------------------- uid
---------------------------- username

所以我的一个问题是我什至需要“帖子”节点!?该节点将包含用户的所有帖子名称...

我是否应该只放入一个“时间线”节点并删除子节点并使其看起来像这样:

timeline
-------- <POSTID>
----------------- created
----------------- image
----------------- posttext
----------------- likes
----------------- <poster>
-------------------------- uid
-------------------------- username

这样我可以查询“时间轴”节点,这也可以通过在我的 firebase 查询中使用 queryLimited(toLast: Int) 进行分页?

您有什么想法和/或您有更好的方法来组织数据?

【问题讨论】:

【参考方案1】:

NoSQL 数据库中的数据建模很大程度上取决于您的应用程序的用例。因此,不可能在特定用例的上下文之外提供数据建模建议。

例如:如果您的用户都看到所有用户的所有帖子的相同时间线,那么以该格式将数据存储在数据库中是有意义的。

这实际上在 Firebase 中很常见:您可以直接在数据库中对您看到的数据(在屏幕的一部分中)进行建模。

这也意味着,如果您在应用程序的多个屏幕中看到相同的数据,那么这些数据也存在于数据库中的多个位置是很正常的。复制数据是 NoSQL 数据库中的常见习语。

您在向应用添加用例时需要考虑这些因素,因为您会经常发现自己更改和扩充数据模型以支持新的用例。

如需更详细的介绍,我建议阅读NoSQL data modeling 并观看Firebase for SQL developers。

【讨论】:

感谢您对 NOSQL 的理性,但根据您的看法,same timelines of all posts by all users, then it makes sense to store the data in that format in the database 您会在我的问题中推荐timeline node or the second case 吗?看起来我的用例确实更有意义......你的想法是什么?

以上是关于关于在 Firebase Realtime 后端创建具有 Posts 节点的社交应用程序的提示/建议 [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

从 firebase-realtime-database 过滤数据

在 Firebase-Realtime Database 上使用啥规则让用户注册和登录?

Flutter firebase realtime db 在规则中使用 displayName

在单个 Activity 中使用 2 个或更多 Firebase Realtime DB

如何使用 Firebase RealTime 数据库根据特定类别获取项目集合

当.keepSynced(true)时,Firebase Realtime .once()是否仍会下载整个节点?]