Добавить / удалить объект в автономном режиме запускает облачную функцию при выходе в Интернет. Как избежать использования облачной функции для добавления данных по пустому пути? - PullRequest
1 голос
/ 08 октября 2019

Когда я в автономном режиме, если я добавляю объект к пути, по которому прослушивается облачная функция, а затем удаляю его, пока он не подключен к Интернету, серверы Firebase получат создание объекта, а затем сразу после его удаления. ,Проблема заключается в том, что при создании он запускает облачную функцию. Эта облачная функция перехватит некоторые данные по другому пути и добавит эти данные в объект, который был создан. Но поскольку объект был удален в автономном режиме, он в конечном итоге удаляется. Но облачная функция воссоздает ее (частично) при добавлении данных, которые она собирала, куда-то еще.

Поскольку я не хочу отслеживать каждый отдельный объект, который я создаю / удаляю, я подумал о проверке, еслиобъект все еще существует прямо перед сохранением этих данных. Проблема в том, что когда я это делаю, объект все еще существует, но к тому времени, когда я сохраняю в нем данные, он больше не существует.

Какие у меня варианты? Я думал о добавлении 0.5s sleep , но я не думаю, что это лучшая практика.

1 Ответ

0 голосов
/ 08 октября 2019

Прежде всего, вы не можете многое сделать в клиентском приложении, чтобы помочь в этой ситуации. Все, что вы сделаете для компенсации этого, будет в облачных функциях.

Во-вторых, вы должны предполагать, что события могут быть доставлены не по порядку. Удаление может быть обработано облачными функциями перед созданием. Если ваш код не обрабатывает этот случай, вы можете ожидать несоответствия.

Вы сказали: «Я не хочу отслеживать каждый отдельный объект, который я создаю / удаляю», но факт в том, что этоэто лучший вариант, если вы хотите последовательную обработку событий, которые могут произойти не в порядке. Нет легкого выхода из этой ситуации, если вы используете облачные функции. Кроме того, ваши функции должны быть идемпотентными, чтобы они могли обрабатывать события, которые могут быть доставлены более одного раза.

Одна альтернатива - избегать внесения изменений в документы и вместо этого передавать объекты «команда» в облачные функции. что сказать ему то, что должно измениться. Это может немного помочь, но вы должны также предположить, что эти команды могут поступать не по порядку.

Это все часть обратной стороны серверных серверных частей. Плюс в том, что вам не нужно настраивать, управлять и освобождать экземпляры сервера. Но ваш код должен быть устойчивым к этим проблемам.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...