Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/firebase/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Firebase 关系持续性_Firebase_Emberfire - Fatal编程技术网

Firebase 关系持续性

Firebase 关系持续性,firebase,emberfire,Firebase,Emberfire,使用EmberFire,我试图处理相关的数据集。在这种情况下,一个活动有许多参与者,参与者有许多活动 当我想将玩家添加到活动中时,我知道我可以将玩家对象推送到campaign.players,保存玩家,然后保存活动。这将更新两个记录,从而巩固关系。这个很好用 我的问题是关于保存一条或两条记录时如何处理失败的假设 例如,您将如何处理这样一种情况:保存玩家记录成功(从而将相应的活动ID添加到其活动字段),但保存活动失败(从而无法将玩家添加到其玩家字段)。在这种情况下,您可能会发现一些非常混乱的数据

使用EmberFire,我试图处理相关的数据集。在这种情况下,一个活动有许多参与者,参与者有许多活动

当我想将玩家添加到活动中时,我知道我可以将玩家对象推送到campaign.players,保存玩家,然后保存活动。这将更新两个记录,从而巩固关系。这个很好用

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

例如,您将如何处理这样一种情况:保存玩家记录成功(从而将相应的活动ID添加到其活动字段),但保存活动失败(从而无法将玩家添加到其玩家字段)。在这种情况下,您可能会发现一些非常混乱的数据

我曾考虑对这两条记录进行“快照”,然后在一次更新失败时将它们重置为以前的状态,但这似乎会产生一些半噩梦般的代码


想法?

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

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

从文件中:

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

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

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

您好,您是否有时间查看建议的解决方案?