首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >EmberFire关系持久化

EmberFire关系持久化
EN

Stack Overflow用户
提问于 2018-06-05 04:38:49
回答 1查看 52关注 0票数 0

使用EmberFire,我正在尝试处理相关的数据集。在这种情况下,一个Campaign有许多玩家,玩家有多个Campaign。

当我想要向campaign添加一个玩家时,我知道我可以将player对象推送到campaign.players,保存该播放器,然后保存该活动。这将更新这两个记录,以便巩固关系。这可以很好地工作。

我的问题是关于在保存一个或两个记录时如何处理失败的假设。

例如,如果保存玩家记录成功(从而将相应的活动ID添加到其campaign字段中),但保存活动失败(因此无法将玩家添加到其player字段中),您将如何处理这种情况?看起来,在这种情况下,您可能会遇到一些非常混乱的数据。

我正在考虑拍摄两个记录的“快照”,如果一个更新失败,然后将它们重置为以前的状态,但这似乎会创建一些半噩梦般的代码。

有什么想法?

EN

回答 1

Stack Overflow用户

发布于 2018-06-05 05:01:17

我猜您使用的是实时数据库。如果使用具有不同路径的update()方法,“只需调用一次update(),就可以同时更新JSON树中的多个位置”

以这种方式进行的

同步更新是原子的:要么所有更新成功,要么所有更新失败。

来自文档:https://firebase.google.com/docs/database/web/read-and-write#update_specific_fields

因此,在您的示例中,您应该执行类似以下的操作,但只要updates对象包含所有同步更新,就有可能出现许多变化:

代码语言:javascript
复制
  var updates = {};
  updates['/campaigns/players/' + newPlayerKey] = playerData;
  updates['/players/campaigns/' + campaignKey] = "true";

  return firebase.database().ref().update(updates);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50688433

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档