Это руководство покажет вам, как изменять версии ваших функций Firebase между обновлениями вашего мобильного, веб-приложения или любого другого типа приложения, которое их использует.
Чтобы следовать этому руководству, вам не нужно ничего особенного. Он просто раскроет простой пример и объяснит лежащие в его основе принципы. Вы можете легко реализовать это на любой платформе и в любом приложении, использующем функции Firebase.
В этом руководстве также не используются какие-либо другие технологии, кроме функций Firebase и простого машинописного текста для объяснения принципов в коде.
Вы также можете использовать Express для управления версиями с функциями Firebase, и это правильное решение. Однако мне показалось раздражающим и ненужным добавлять дополнительный слой в Firebase Functions.
Для чего нужны версии?
Одна из основных причин заключается в том, что, работая над мобильным приложением Gifter, я планировал будущие функции и версии. Но вы можете планировать не так много. И по мере того, как вы работаете над приложением, все меняется: планы, функции, интерфейсы, структура данных. Все меняется по мере того, как вы получаете обратную связь, новые идеи и новые планы.
Итак, как безопасно переключать пользователей между двумя основными версиями, которые изменяют способ обработки данных?
Я не хотел блокировать пользователей и заставлять их скачивать новую версию. Когда кто-то получит обновление, зависит от Google или вашего магазина дистрибутивов и от того, насколько быстро он распространяет новую версию. Кроме того, меня всегда раздражало, когда мне блокировали использование приложения только потому, что есть обновление.
Реализация
Я реализовал простой интерфейс в Typescript, который расширяет все мои запросы к любой функции Firebase.
export interface FunctionsApiVersion { version: number; }
У нас пока такая ситуация:
Теперь у меня есть «версия API», и функция может реагировать соответствующим образом. Поскольку у меня есть только одна версия, функция будет просто выполнять:
if(version == 1){ doSomething(); } else { logError("API version not supported"); }
Вам нужно будет реализовать эти функции в зависимости от ваших потребностей