#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 (без базы данных реального времени).