EmberFire关系持久性

时间:2018-06-04 20:38:49

标签: firebase emberfire

使用EmberFire,我尝试使用相关的数据集。在这种情况下,广告系列有许多玩家和玩家有很多广告系列。

当我想在广告系列中添加播放器时,我了解我可以将播放器对象推送到campaign.players,保存播放器,然后保存广告系列。这将更新两个记录,以便关联关系。这很好。

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

例如,您将如何处理保存玩家记录成功的场合(从而在其广告系列字段中添加相应的广告系列ID),但保存广告系列则失败(因此无法将玩家添加到其玩家字段中)。看起来在这种情况下,你可以打开一些非常混乱的数据。

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

思想?

1 个答案:

答案 0 :(得分:0)

我猜你正在使用实时数据库。如果您使用具有不同路径的update()方法,则只需调用update()即可同时更新JSON树中的多个位置

  

以这种方式进行的同步更新是原子的:要么全部更新   成功或所有更新都失败。

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

因此,在您的情况下,您应该执行以下操作,但只要updates对象保存所有同步更新,就可以进行许多变更:

  var updates = {};
  updates['/campaigns/players/' + newPlayerKey] = playerData;
  updates['/players/campaigns/' + campaignKey] = "true";

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