【问题标题】:How to make transactions on multiple data tables in Firebase?如何在 Firebase 中对多个数据表进行事务处理?
【发布时间】:2017-04-24 06:15:40
【问题描述】:

我有一个使用 Firebase 的应用程序。我有一个新帖子正在添加。当我成功时,我会在数据库中执行一些操作,例如:

  1. 将新的帖子信息添加到帖子节点

  2. 将新帖子的 ID 添加到用户节点

  3. 将媒体上传到存储

例如,用户可以在第 2 步关闭应用程序。如何在开始添加新帖子时重置数据?

如果我理解正确的话,Firebase 事务仅适用于一个数据表。

主要问题是:如何在 Firebase 中对多个数据表和存储进行事务处理?

【问题讨论】:

  • 您不能同时在数据库中的多个位置进行真正的原子事务。您可以进行多位置更新,但这对于来自其他客户端的并发更新并不安全。
  • @DougStevenson 感谢您的回答!

标签: swift firebase transactions firebase-realtime-database


【解决方案1】:

我相信您正在寻找这样的东西:https://firebase.google.com/docs/database/web/read-and-write#update_specific_fields。它允许您在任何需要的地方一次运行多个更新。这是代码的快照:

var updates = {};
updates['/posts/' + newPostKey] = ...;
updates['/user-posts/' + uid + '/' + newPostKey] = ...;

return firebase.database().ref().update(updates);

【讨论】:

  • 感谢您的回答。我会尝试在第 2 天晚上做。如果有帮助,我会接受。顺便说一句,我也可以添加这样的东西来存储吗?或者我应该使用完成处理程序上传数据,然后像你的答案那样更新数据库?
  • 再次感谢。使用存储是这样的:使用完成处理程序上传 -> 将数据保存到数据库。效果不错。
猜你喜欢
  • 2017-01-12
  • 2016-08-16
  • 2021-07-05
  • 2020-04-25
  • 2019-06-27
  • 2020-08-05
  • 2021-11-26
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多