Насколько я понимаю, транзакции могут возвращать null
по двум причинам:
- На узле, где выполняется транзакция, значения нет.
- Локальный кеш пуст, поскольку Firebase Cloud Functions не имеет состояния. Следовательно, он может вернуть
null
в самый первый раз и перезапустить функцию.
Мой вопрос: как мы можем различить guish между этими двумя случаями? Или firebase выполняет различие само по себе?
Myref.transaction(function(currentData) {
if(currentData != null) {
return currentData + 1;
} else {
console.log("Got null")
return;
}
}, function(error, committed, snapshot) {
if(!committed) {
// The transaction returned null.
// But don't know if it's because the node is null or
// because the transaction failed during the first iteration.
}
});
В приведенном выше примере обратный вызов транзакции будет передан null
, когда значение в Myref
не существует и когда он пытается получить данные в самой первой попытке при выполнении транзакции.
Если значение Myref
фактически пусто, я хочу, чтобы число 1238484
было заполнено там. Если это не так, и null
фактически выбрасывается из-за неправильного чтения транзакции, как мне сделать это различие?
PS: Пожалуйста, не предлагайте прослушиватель на узле. Есть ли другой, более эффективный способ сделать это?