ios - 如何对 Firestore 数据建模?
问题描述
我是 Firestore 的新手,正在尝试为我的应用开发数据模型。
背景:我有一款约会类型的应用程序,用户可以通过 3 种主要方式相互交流。喜欢、拒绝和评论用户个人资料。用户喜欢和评论是私人的。换句话说,只有我可以看到谁喜欢或评论了我的个人资料(它不像社交媒体,每个人都可以看到谁喜欢了一个帖子)。我需要能够查询用户以了解谁取消了他们的个人资料,因此我不会再次向这些用户显示。我还需要知道谁喜欢/评论了用户个人资料,这样我就可以查询哪些用户互相喜欢/评论了(他们已经匹配)
- 用户可以喜欢许多个人资料,反之亦然
- 用户可以关闭/跳过许多配置文件,反之亦然
- 用户可以评论许多个人资料,反之亦然
我相信这意味着我需要likeUsers、dismissedUsers 和 commentedUsers的根集合
问题: 对于被解雇的用户,我认为我会将每个用户存储为dismissedUsers 根集合的文档,并将他们跳过的每个用户存储为一个字段/值对,就像这样......
解雇用户/用户/用户 1、用户 2、用户 3 等
以上将创建我想要的多对多关系,其中dismissedUsers 可以有很多用户,而用户可以有很多dismissedUsers。但是,我不相信它会随着用户文档变得太大而具有可扩展性。
问题:如何创建这种多对多关系,其中dismissedUsers 可以有很多用户,而用户可以有很多dismissedUsers,以便它具有可扩展性且成本最低?并查询它?
解决方案
首先,我会问自己为什么要使用 Firestore,作为文档数据库,而不是选择关系数据库。我个人喜欢 Firestore 并强烈推荐它。我们选择文档数据库是因为它在许多方面都更快、更容易使用。在其他方面,这是一个缺点,因为您的查询能力非常有限。在我看来,您的大脑正在努力实现关系数据库。
这是一种解决方案
首先,我会尽量避免将用户数据存储在多个位置以避免异常(当然是正确的)。我将拥有一组用户,在其中存储具有唯一 ID 的所有用户数据(最好使用 Firestore 分配的用户数据,这样我就不会发生冲突)。在每个用户文档中,我会链接一个子集合,用于解雇、喜欢、被其他人解雇、被其他人喜欢等。我会记录他们已经解雇、喜欢、被解雇的所有用户(只是用户 ID)通过,被喜欢等。这样我可以查找该用户喜欢或不喜欢谁的所有数据,并相应地向该用户显示我想要的任何内容。
缺点
您必须为每个喜欢写两次,关闭等。使用批量写入同时更新喜欢和喜欢的数据。
推荐阅读
- ios - 将 *both* 字符串和图像放在粘贴板上
- c# - 在控制器中为 INSERT 获取标识值(执行插入命令并在 Sql 中返回插入的 Id)
- rust - 如何从合约中访问链状态数据?
- reactjs - 如何在 useState 挂钩中更新反应状态?
- laravel - 使用 Laravel、VueJS 和 Inertiajs 导出 Excel
- java - 未定义的标签:firestore 内的 loop3
- javascript - 自定义 Google 表格图表的单元格
- python - 为什么列表不保留它的价值?
- python - 将特定于类别的值分配为新列中的观察值
- firebase - 使用 Spring Boot 将图像上传到 Firebase