分散式計數器

想象一下,許多使用者都在執行一個試圖增加資料庫中計數器的 Web 應用程式。每個使用者必須讀取當前計數,新增一個並寫出更新後的值。為了確保沒有人在其他人正在新增計數器時讀取計數器,我們使用交易:

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