firebase-database
Сделки с базами данных Firebase Realtime
Поиск…
Вступление
Транзакции обеспечивают механизм для координации между несколькими сторонами, которые могут одновременно обращаться к одним и тем же данным. Этими «сторонами» могут быть разные экземпляры одного и того же кода, например, у разных пользователей, работающих с одним и тем же приложением или узлами в кластере серверов, в тех же программах или событиях, в которых используются разные программы, такие как приложение администрирования, приложение «конечного пользователя» и / бэкэнд ".
Распределенный счетчик
Представьте, что многие пользователи запускают веб-приложение, которое пытается увеличить счетчик в базе данных. Каждый пользователь должен прочитать текущий счетчик, добавить один и записать обновленное значение. Чтобы убедиться, что никто не читает счетчик, когда кто-то еще добавляет его, мы используем транзакцию:
ref.transaction(function(value){
if (value === null) {
// the counter doesn't exist yet, start at one
return 1;
} else if (typeof value === 'number') {
// increment - the normal case
return value + 1;
} else {
// we can't increment non-numeric values
console.log('The counter has a non-numeric value: ' + value)
// letting the callback return undefined cancels the transaction
}
});