Я думал об использовании такой транзакции для реализации своего рода распределенной блокировки:
let lockId = `myLock`
let lockRef = firebaseAdmin.database().ref(`/locks/${lockId}`)
lockRef.transaction(function(current) {
if (current === null) {
return "1"
}
}, function(error, committed) {
if (committed) {
// .... Do the synchronized work I need ...
lockRef.remove()
}
})
У меня такой вопрос: будет ли функция обновления вызываться с нулем только в том случае, если данные не существуют?
Как правило, это правильный способ реализации распределенной блокировки?