обновление данных vue js firebase при добавлении документа

# #firebase #vue.js #google-cloud-firestore

Вопрос:

Как следует из названия, мне просто интересно, что было бы хорошей / наилучшей практикой для обновления данных на стороне клиента после добавления нового документа в firestore. Итак, в основном, чтобы обобщить функциональность, допустим, у меня есть форма, а под формой находятся все документы. Что было бы хорошим способом обновить данные, чтобы я не подчеркивал firebase. Добавление новых документов — это хорошая часть приложения, над которым я работаю, поэтому оно, вероятно, будет часто использоваться. Мне интересно, должен ли я просто добавить его на стороне клиента, если документ был добавлен успешно, или я должен просто снова отправить вызов для всех документов или что-то еще. Я знаком с опцией моментального снимка, я просто не уверен, что это хорошая практика. Заранее благодарю.

Ответ №1:

Идеальным решением было бы использовать моментальные снимки. Давайте посмотрим на аннотацию из их документации.

Локальные записи в вашем приложении немедленно вызовут прослушиватели моментальных снимков. Это связано с важной функцией, которая называется latency compensation . Когда вы выполняете запись, ваши слушатели будут уведомлены о новых данных до отправки данных на серверную часть.

У извлеченных документов есть metadata.hasPendingWrites свойство, указывающее, есть ли в документе локальные изменения, которые еще не были записаны в серверную часть. Вы можете использовать это свойство для определения источника событий, полученных вашим прослушивателем моментальных снимков.

Итак, вы видите, что вы добавляете документы непосредственно на клиентскую сторону так же, как и при использовании a firestore snapshot , потому что в случае локальной записи данные напрямую принимаются слушателями и не будут сначала поступать на сервер, а затем получать данные.

Кроме того, вы даже можете написать запрос в limit amp; sort данные, и прослушиватель моментальных снимков автоматически обработает логику для ограничения и сортировки данных. Тем не менее, вы даже можете запросить данные после добавления документа на стороне клиента, используя get() , но это просто ходьба вокруг да около.

Snapshots для этой цели были разработаны bi-directional обновления, и я настоятельно рекомендую вам использовать их вместо этого.

Ссылка