gpt4 book ai didi

Firebase:原子事务和多位置更新

转载 作者:行者123 更新时间:2023-12-03 21:36:26 26 4
gpt4 key购买 nike

我试图弄清楚如何在 Firebase 中相应地更新我的数据。

我的应用程序是一个社交网络。假设我必须更新 user 中的 View 计数对象和 post同样,当访客进来时。我还必须更新 updatedAt相同的对象中的值。

  • viewsupdatedAt每个字段都有一个特定的 .write post中的授权和 user child ,所以任何人都可以修改它们,不像其他 child 。
  • views child 必须使用 transaction 更新自动增加计数
  • updatedAt另一方面,child 可以以任何方式更新,transaction , setupdate .

  • 我想通过将这些更新放在一起来限制对 Firebase 的调用次数,并使整个更新原子化。 (也因为还有很多我在这里不描述)

    问题是:
  • 一个 transaction更新viewsupdatedAt必须发生两次:在 posts 上和 users对象,但访问者不能在这些不属于他的对象上写字,只能写两个 viewsupdatedAt child 可以修改。 (即使其他人没有受到影响)。
  • 当前的 Firebase API AFAIK 中不提供多位置事务,因此这也不是原子的。
  • 每个子节点的多位置更新会破坏 view 的原子性。在多用户环境中,这是一个问题。

  • 最后,我目前在做什么:

    一个 transactionviews child 和一个单例 updateupdatedAt一个,在两个 postsusers对象,这使得它们对每个访问者查看的每个帖子的每个 View 进行四个操作。很多!

    这也不是原子的,除了 views children,这对于时间戳字段来说不是什么大问题,但在其他用例中仍然是一个问题。

    我的问题是:

    有什么更好的实现建议吗?

    最佳答案

    至少,您应该能够更新 updatedAt使用单个 update() 的用户和帖子上的字段调用data fan-out method .

    您可能拥有的任何增量计数器仍需要单独的事务才能正确处理。

    关于Firebase:原子事务和多位置更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35457031/

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