【问题标题】:how to implement relations on firebase firestore如何在 firebase firestore 上实现关系
【发布时间】:2022-12-03 17:47:35
【问题描述】:
所以我必须保存在我的网站上发生的操作的历史记录。我目前正在做的是将 userData 保存到操作中,因为我认为 firestore 没有简单的关系。
当我更改用户的 userData 时出现问题,然后历史记录显示旧的 userData 而不是新的。因此,我想到的解决方案是遍历他的所有操作并更改那里的所有 userData。或者还有什么我可以做的吗?是否可以创建 firebase 云功能,从任何用户搜索 10 个最近的活动,并将相关的用户数据附加到它?还是会花太长时间?如何整体处理 Firestore 中的关系?因为如果我在前端完成这一切,我将不得不发出 10 个用户数据请求来显示它们。
如果在前端使用 firebase 关系会生成过多的提取,我该如何解决?
【问题讨论】:
标签:
firebase
google-cloud-firestore
【解决方案1】:
听起来您正在将用户数据连同每个操作一起存储在您的 Firestore 数据库中。这是一种常见的方法,因为 Firestore 不像关系数据库那样支持文档之间的关系。但是,正如您所观察到的,当用户的数据发生变化时,它可能会导致问题。
此问题的一种解决方案是在数据更改时更新用户的所有操作中的数据。这可以通过使用 Firestore 查询来查找给定用户的所有操作,然后使用新的用户数据更新每个操作来完成。这将确保用户的数据在他们的所有操作中都是最新的。
您可以尝试的另一种方法是使用 Cloud Functions 在数据发生变化时自动更新用户的操作数据。该功能可以由用户数据的更改触发,并且可以使用与上述查询类似的查询来查找和更新用户的操作。这种方法比在前端更新数据更有效,因为它只需要对 Cloud Function 的单个请求,而不是多个请求来单独更新每个操作。
总的来说,在 Firestore 中处理关系可能具有挑战性,因为它不像关系数据库那样支持关系。但是,通过使用上述技术,您可以解决这些限制并确保您的数据是一致的和最新的。
希望这可以帮助!