Firebase: предотвращение выполнения обратного вызова на стороне клиента, если в разрешении на запись отказано - PullRequest
0 голосов
/ 08 мая 2018

Итак, у меня есть несколько правил проверки, например, не разрешать сообщения в чате длиной более 300 символов.

Правило работает нормально, но (AFAIK) firebase очень любит оптимизировать процесс, который приводит к тому, что они выполняют обратные вызовы, такие как "child_added", прежде чем сервер скажет нам, что все в порядке.

Это заставляет сообщение появляться в чате, но не поступает на сервер, оставляя нас в несинхронизированном состоянии.

Есть ли способ предотвратить обратный вызов до тех пор, пока сервер не скажет, что все в порядке?

Единственный обходной путь, который я вижу сейчас, - это перехват события «Отказ в разрешении» и повторное удаление сообщения. Это, однако, не приведет к тому, что опыт будет таким чистым, как мог бы (вообще не добавлять сообщения в чат по сравнению с его появлением, а затем вскоре после его исчезновения)

1 Ответ

0 голосов
/ 08 мая 2018

Если правила безопасности на стороне сервера отклоняют вашу операцию записи, клиент Firebase запускает события для согласования локального приложения. Например: если вы добавили нового дочернего элемента (child_added), клиент сгенерирует child_removed, как только узнает, что сервер отклонил операцию.

Пока ваше приложение правильно обрабатывает все child_* события, пользовательский интерфейс можно поддерживать в актуальном состоянии.

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