Поиск…


Вступление

Транзакции обеспечивают механизм для координации между несколькими сторонами, которые могут одновременно обращаться к одним и тем же данным. Этими «сторонами» могут быть разные экземпляры одного и того же кода, например, у разных пользователей, работающих с одним и тем же приложением или узлами в кластере серверов, в тех же программах или событиях, в которых используются разные программы, такие как приложение администрирования, приложение «конечного пользователя» и / бэкэнд ".

Распределенный счетчик

Представьте, что многие пользователи запускают веб-приложение, которое пытается увеличить счетчик в базе данных. Каждый пользователь должен прочитать текущий счетчик, добавить один и записать обновленное значение. Чтобы убедиться, что никто не читает счетчик, когда кто-то еще добавляет его, мы используем транзакцию:

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
  }
});


Modified text is an extract of the original Stack Overflow Documentation
Лицензировано согласно CC BY-SA 3.0
Не связан с Stack Overflow