我想将数据发送到Firebase数据库并等待数据更新以执行其他操作,例如$ state.go或其他。
如何使用Firebase和AngularJs以良好的方式做到这一点?
这是我的代码部分:
var ref_achats_offres = firebase.database().ref('achats_offres');
var key_achats_offres = ref_achats_offres.push().key;
var ladate = moment().format();
var accountId = $localStorage.accountId;
var push_achats_offres = ref_achats_offres.child(key_achats_offres).set({
cout: cout,
ajout_le: ladate,
active:true,
accounts: accountId,
id_offre : id_offre,
unique_code: code
});
var ref_offres = firebase.database().ref('offres');
ref_offres.child(id_offre).child('achats_offres').child(key_achats_offres).set(true);
var ref_accounts = firebase.database().ref('accounts');
ref_accounts.child(accountId).child('achats_offres').child(key_achats_offres).set(true);
firebase.database().ref('accounts').child(accountId).child('credits').transaction(function(credits) {
return credits - cout;
});
$scope.modal2.hide();
Utils.message(Popup.checkIcon, Popup.achatOffreEffectue);
$state.go('mes_achats');
答案 0 :(得分:0)
<document>
和set()
调用返回Promise。当写操作完成时,promise将解析,您可以通过实现transaction()
来处理此问题。
如果您希望两个集合操作按顺序运行,然后导航:
then()
如果您希望它们并行运行并在导航之前完成:
ref_accounts.child(accountId).child('achats_offres').child(key_achats_offres)
.set(true)
.then(function() {
firebase.database().ref('accounts').child(accountId).child('credits')
.transaction(function(credits) {
return credits - cout;
})
.then(function() {
$scope.modal2.hide();
Utils.message(Popup.checkIcon, Popup.achatOffreEffectue);
$state.go('mes_achats');
});
});