【问题标题】:Use transaction to update value at two different nodes使用事务更新两个不同节点的值
【发布时间】:2017-04-04 14:03:31
【问题描述】:

我在数据库中有两个不同的节点。

  • all posts

  • users

根据用户添加帖子时的扇出模型,它会在all postsusers/uid/posts 处更新。

每个帖子都包含一个点赞按钮,用于显示点赞数。

当用户点击它时,like 应该会增加 +1。

根据docs,我们将transaction用于这种过程。

但使用transaction 的问题在于它只更新一个节点据我所知

但我的问题是如何在上面提到的两个节点中更新此事务

我应该使用update 方法

在两个节点都更新事务的使用方式是什么

【问题讨论】:

    标签: firebase firebase-realtime-database


    【解决方案1】:

    您可以使用Cloud Functions for Firebase 将用于更新数据库的所有逻辑推送到服务器端。使用可以使用database trigger 来响应正在写入数据库的数据,然后执行一些 JavaScript 以确保扇出正确完成。它将具有确保所有更改发生而不依赖于客户端的优势。

    事务不能同时修改两个不同位置的数据,但您可能仍希望在客户端和 Cloud Functions 中使用它们以确保并发写入不会出现问题。

    【讨论】:

    • 感谢您的回复....因为我不得不在我的整个应用程序中只对like按钮使用事务,如果我在like按钮上执行两个单独的事务点击以更新不同的like节点?这会是不好的做法吗?
    • 在您需要在面对并发写入时安全的更新时随时使用事务。
    • @DougStevenson 相同的响应对 Swift 有效吗?基本上,如果我不在服务器上运行任何代码,我就会被卡住,对吧?
    • @bibscy 没错,因为所有 Firebase 实时数据库 SDK 都具有基本相同的功能和限制。
    • @DougStevenson 我正在尝试使用 REST API 执行多路径更新,但收到错误请求响应。你能看看我的问题吗? stackoverflow.com/questions/46100421 。谢谢
    猜你喜欢
    • 2022-08-20
    • 2019-07-31
    • 1970-01-01
    • 2018-01-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多