Сегодня, немного больше программируя с Firebase, я обнаружил, что хочу пару функций:
1) Mergeset:
Say I have firebase ref
со значением {a:1,b:2,c:3}
.
Если я сделаю что-то вроде ref.set({a:-1,b:-2})
, новое значение будет (неудивительно) {a:-1,b:- 2}
.
Вместо этого представьте ref.mergeSet({a:-1,b:-2})
, результатом которого будет значение ref, равное {a:-1,b :-2,c:3}
.
Теперь я понимаю, что мог бы сделать что-то вроде ref.child("a").set(-1)
и ref.child("b").set(-2 )
для достижения этого результата, но, по крайней мере, в некоторых случаях я бы предпочел получить только один вызов моего обработчика .on()
.
Это переходит в мою вторую идею.
2) Batchset:
В моем приложении мне нужен способ заставить произвольное количество вызовов .set
привести только к одному вызову .on
в других клиентах. Что-то вроде:
ref.startBatch()
ref.child("a").set(1)
ref.child("b").set(2)
....
ref.endBatch()
В пакетном режиме .set
не приведет к вызову .on
, вместо этого минимальное количество вызовов .on
. ] будет результатом вызова .endBatch
.
Я с готовностью признаю, что эти идеи находятся в зачаточном состоянии, и я не удивлюсь, если они будут конфликтовать с существующими архитектурными особенностями Firebase, но я решил поделиться ими в любом случае. Я обнаружил, что мне приходится тратить больше времени на обеспечение согласованности между клиентами при использовании Firebase, чем я ожидал.
Еще раз спасибо, и продолжайте в том же духе.