Я использую firebase и пытаюсь создать баланс пользователей. Когда пользователь что-то покупает, это значение снимается с его баланса.

В настоящее время это работает правильно и обновляет базу данных firebase. Однако я не могу выйти из цикла расчета нового баланса. Поэтому повторяется тот же расчет.

Я пробовал использовать break и return и, похоже, ничего не добился.

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 вне цикла.

1
SubZeroFish 20 Дек 2017 в 18:25

1 ответ

Лучший ответ

on () настраивает прослушиватель, который постоянно отвечает к изменениям в каком-либо месте в базе данных. Его можно вызывать повторно, пока вы его не удалите. Если вы хотите просто прочитать данные один раз, используйте один раз ( ) вместо этого.

3
Doug Stevenson 20 Дек 2017 в 15:28