我在我的应用程序中使用 AngularJS 和 FireBase。当用户按下按钮时,我想将拍卖物品的价格提高 0.01 美元,并且在它被提交到 FireBase 数据库之后 - 从用户的余额中扣除 1.00 美元。我为此使用 FireBase transaction(),但该项目的值未在 FireBase DB 中更新:
$scope.auctionPriceRef = travelBidsFirebaseRef.child('auction/' + $scope.auction.id + '/price');
$scope.auctionPriceRef.transaction(function(currentValue) {
console.log("Current val + 0.01: " + (currentValue + 0.01));
return currentValue + 0.01;
}, function(error, committed, snapshot) {
if (error) {
console.error("Error increasing auction price: " + error);
}
if (committed) {
console.log("Successfully increased auction price to: " + snapshot.val());
$rootScope.authUser.balance -= 1.0;
}
});
此代码执行没有错误,我可以在控制台看到以下输出(商品的初始价格为 1.00):
Current val + 0.01: 1.01
Successfully increased auction price to: 1
回退执行,没有错误但快照值错误。当我签入 Forge 时,我可以确认该值尚未在那里更新。奇怪...这里还有另一个奇怪的事情:当我非常快速地单击按钮几次时,实际上正在提交一些事务。有没有人经历过类似的行为或对此有解释?我的代码似乎是正确的......还是不正确?