Я думаю, что схема должна быть такой:
Вы должны как-то подписаться на обновления firebase (я не знаком с firebase, но я уверен, что для этого должен быть какой-то механизм), а когда обновления приходят из firebase - вы должны изменить свое хранилище, отправив некоторые действия, чтобы синхронизируйте магазин с Firebase.
В идеале ваше приложение должно работать только с вашим магазином. Магазин должен скрывать такие детали реализации, как использование Firebase. Если завтра вы переключитесь с firebase на что-то другое, вам не следует переписывать свои компоненты, которые работают с магазином. Они по-прежнему будут работать с магазином и с теми же действиями.
Когда вы обновляете что-то в своем магазине, вам также необходимо обновить Firebase. Я думаю, что вы можете сделать это правильно в своих действиях, это должно быть хорошо. Таким образом, вы можете быть уверены, что все изменения, которые появятся в вашем магазине, будут в firebase. Например. Вы звоните someAction
, который на самом деле делает некоторые манипуляции с огненной базой. Если вы подписались на изменения в Firebase, вы даже не будете делать что-то еще в этом действии, кроме отправки некоторой команды для FireBase, потому что ваша подписка обновит ваш магазин. Или вы можете немедленно изменить хранилище (или оптимистическое обновление), затем дождаться ответа от firebase, а затем решить оставить это обновление или вызвать некоторую мутацию для отката (однако здесь вы должны быть очень осторожны из-за подписки на изменения в firebase).
Или, в качестве альтернативы, вы можете написать какой-нибудь плагин для вашего магазина, который будет отправлять обновления в firebase только после внесения каких-либо изменений в вашем магазине. В этом случае обновления из вашего приложения сначала будут появляться локально в вашем магазине, затем ваш плагин отправит их в firebase (возможно, такой плагин даже существует, idk).
Я не эксперт в firebase, но попытался поделиться некоторыми мыслями о том, как это должно работать в целом. Надеюсь, это поможет.
О, вернемся к вашему вопросу:
dbOrdersRef.push (заказ) или с вызовом магазина с, например, этим. $ Store.dispatch ('setOrder', заказ), который не обновляет Firebase
Я думаю, вам вообще не следует использовать firebase в компонентах, а вместо этого следует использовать свой магазин. Поэтому я бы лучше посоветовал использовать второй вариант. Но вы должны реализовать обновления Firebase по своему усмотрению, по умолчанию нет никаких магических обновлений из магазина в Firebase (по крайней мере, если вы не используете какой-либо плагин с этой магией).