Как мне использовать мои переменные firebase как целое число?

#javascript #firebase #firebase-realtime-database

#javascript #firebase #firebase-база данных в реальном времени

Вопрос:

У меня есть простая программа, в которой вы можете публиковать / принимать игры, а затем сообщать о результатах. У меня возникла проблема с обновлением оценки, поскольку информация, хранящаяся в firebase, хранится в виде строки. Как мне принять мой результат за целое число, чтобы добавить к нему?

         if (selfScore > oppScore) {
        var ref = new Firebase('taken out');
            var selfRef = firebase.database().ref("users/"   (selfKey));
            selfRef.update({
                "tScore":  ("tScore"   3)
            });
        }
  

В идеале оценка должна учитывать предыдущую оценку и добавлять 3, но это не тот случай. Я новичок в firebase, поэтому, если это очевидно, я виноват. Редактирование для уточнения, когда я удаляю tscore и просто получаю tScore: 3, оно просто изменяет tScore на 3, оно не добавляет его.

Ответ №1:

Вы не можете выполнять некоторые операции со значением поля в update() методе. Итак, вы должны сначала прочитать значение из базы данных, а затем обновить запись новым значением.

Лучший подход — использовать транзакцию для такой операции, которая автоматически выполнит операцию чтения / записи и, кроме того, гарантирует, что «нет конфликтов с другими клиентами, записывающими в одно и то же место в одно и то же время».

Затем вы должны сделать следующее:

 var selfRef = firebase.database().ref("users/"   selfKey   "/tScore");
selfRef.transaction(function(currentValue) {
  return currentValue   3;
});
  

Комментарии:

1. К вашему сведению, вы можете взглянуть на это: firebase.googleblog.com/2019/03 / … . Хотя это для Firestore (без базы данных реального времени).