2017-12-20 10 views
1

私はfirebaseを使用しており、ユーザーバランスを作成しようとしています。ユーザーが何かを購入すると、この金額は残高から奪われます。早く機能を破る

これは現在正常に動作し、firebaseデータベースで更新されています。しかし、私は新しいバランスを計算するループから壊れているようには見えません。したがって、同じ計算が繰り返されます。

私はbreakreturnを使用しようとしましたが、どこにも見えません。

function changeuserbal(coinwager){ 
var dbRoot = firebase.database().ref(); 
dbRoot.on("value", snap => { 
    var cData = snap.val(); 
    var cBet = cData.coinbet; 
    var uBal = cData.userbalance; 
    var BalUp = uBal-cBet; 
    alert(BalUp); 
    firebase.database().ref("userbalance").set(BalUp); 
}); 
} 

firebase.database().ref("userbalance").set(BalUp);がループを再開すると仮定しています。私はこれを外に置こうとしましたが、私はループの外でBalUpを渡すことはできません。

+2

ここには「ループ」はありません。 – Pointy

+0

@Pointyそれは正しいですが、私の問題では、データが更新されたときにdbRoot.onが再び始まるようにループが問題を引き起こしていました。 – SubZeroFish

答えて

3

on()は、データベース内の場所の変更に絶えず応答するリスナーを設定します。削除するまで繰り返し呼び出されることがあります。 1回だけデータを読みたい場合は、代わりにonce()を使用してください。

+0

はい、それは修正されました。私はこれを見逃しているに違いない。どうもありがとうございました。 – SubZeroFish

関連する問題