【发布时间】:2017-02-12 09:52:26
【问题描述】:
我的 firebase 中有以下数据结构
-ActionSheet
-PendingApproval
-SomeKey1
-someData
-someData
-someData
-SomeKey2
-someData
-someData
-someData
-Approved
-SomeKey3
-someData
-someData
-someData
当屏幕出现时,将向用户显示pendingApproval 中的所有项目。 当用户在其中一个条目上单击批准时,我想将数据从“PendingApproval”移动到“Approved”节点。
说如果用户点击了SomeKey1的批准,目前,我正在这样做
1. Duplicate the data to Approved node
2. Upon success, delete the entry SomeKey1 from PendingApproval
但是,第一步成功而第二步失败的可能性很小。在这种情况下,我的数据库中有两个 SomeKey1
我想知道是否有办法自动执行此操作,以保证操作同时成功或失败。
我刚刚阅读了Firebase Atmoic,他们只提到了原子更新,而不是“设置+删除”。
下面是我的代码
// save data to firebase
saveoFirebase_approved(myData: Object, key: string) {
let savePath = '/ActionSheet/Approved/' + key;
return this.af.database.object(savePath).set(myData);
}
// remove pending approval from firebase
removePendingFromFirebase(myData: Object) {
let savePath = '/ActionSheet/PendingApproval/' + key;
return this.af.database.object(savePath).remove();
}
this.databaseService.saveoFirebase_approved(data, key)
.then(result => {
// delete pending from firebase
this.databaseService.removePendingFromFirebase(data)
.then(result => {
// both action completed
})
.catch(error => {
// something went wrong deleting item from firebase
})
})
.catch(error => {
// something went wrong saving to firebase
})
}
注意:我正在使用 Angular 2 和 AngularFire
【问题讨论】:
标签: javascript angular firebase firebase-realtime-database angularfire