# #firebase #vue.js #google-cloud-firestore
Вопрос:
Как следует из названия, мне просто интересно, что было бы хорошей / наилучшей практикой для обновления данных на стороне клиента после добавления нового документа в firestore. Итак, в основном, чтобы обобщить функциональность, допустим, у меня есть форма, а под формой находятся все документы. Что было бы хорошим способом обновить данные, чтобы я не подчеркивал firebase. Добавление новых документов — это хорошая часть приложения, над которым я работаю, поэтому оно, вероятно, будет часто использоваться. Мне интересно, должен ли я просто добавить его на стороне клиента, если документ был добавлен успешно, или я должен просто снова отправить вызов для всех документов или что-то еще. Я знаком с опцией моментального снимка, я просто не уверен, что это хорошая практика. Заранее благодарю.
Ответ №1:
Идеальным решением было бы использовать моментальные снимки. Давайте посмотрим на аннотацию из их документации.
Локальные записи в вашем приложении немедленно вызовут прослушиватели моментальных снимков. Это связано с важной функцией, которая называется
latency compensation
. Когда вы выполняете запись, ваши слушатели будут уведомлены о новых данных до отправки данных на серверную часть.У извлеченных документов есть
metadata.hasPendingWrites
свойство, указывающее, есть ли в документе локальные изменения, которые еще не были записаны в серверную часть. Вы можете использовать это свойство для определения источника событий, полученных вашим прослушивателем моментальных снимков.
Итак, вы видите, что вы добавляете документы непосредственно на клиентскую сторону так же, как и при использовании a firestore snapshot
, потому что в случае локальной записи данные напрямую принимаются слушателями и не будут сначала поступать на сервер, а затем получать данные.
Кроме того, вы даже можете написать запрос в limit
amp; sort
данные, и прослушиватель моментальных снимков автоматически обработает логику для ограничения и сортировки данных. Тем не менее, вы даже можете запросить данные после добавления документа на стороне клиента, используя get()
, но это просто ходьба вокруг да около.
Snapshots
для этой цели были разработаны bi-directional
обновления, и я настоятельно рекомендую вам использовать их вместо этого.