Firebase 关系持续性
使用EmberFire,我试图处理相关的数据集。在这种情况下,一个活动有许多参与者,参与者有许多活动 当我想将玩家添加到活动中时,我知道我可以将玩家对象推送到campaign.players,保存玩家,然后保存活动。这将更新两个记录,从而巩固关系。这个很好用 我的问题是关于保存一条或两条记录时如何处理失败的假设 例如,您将如何处理这样一种情况:保存玩家记录成功(从而将相应的活动ID添加到其活动字段),但保存活动失败(从而无法将玩家添加到其玩家字段)。在这种情况下,您可能会发现一些非常混乱的数据 我曾考虑对这两条记录进行“快照”,然后在一次更新失败时将它们重置为以前的状态,但这似乎会产生一些半噩梦般的代码Firebase 关系持续性,firebase,emberfire,Firebase,Emberfire,使用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);
您好,您是否有时间查看建议的解决方案?