分布式计数器
想象一下,许多用户都在运行一个试图增加数据库中计数器的 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
}
});